Устройства с разными разрешениями, обращающиеся к одной и той же папке drawable-xxxx

Я разрабатываю приложение для всех доступных разрешений экрана. Мой подход заключается в создании разных папок drawable и хранении в них соответствующих изображений. Все шло нормально, пока я не обнаружил конфликт между двумя устройствами с разным разрешением. Устройства имеют разрешение 480*800 и 600*1024. Но в соответствии с их плотностью пикселей они обращаются к одной и той же drawable папке drawable-hdpi (которая также соответствует данной спецификации на этом изображении ниже).

Моя проблема в том, что изображения в этой папке идеально подходят для одного устройства, а не для другого. Это означает, что если я сохраняю изображения для 600*1024, они перекрываются на другом устройстве 480*800 и все такое. Я попытался переименовать папку в другие возможные имена, но не смог добиться успеха. Пожалуйста, помогите мне, как я могу справиться с этой ситуацией. Надеюсь понятно описал свою ситуацию...


person Vikram Singh    schedule 06.03.2013    source источник
comment
будьте немного более креативны, используйте относительный макет и используйте соответствующее масштабирование в представлении изображения, чтобы оно настраивалось - вы также можете использовать веса в линейном макете.   -  person Athul Harikumar    schedule 06.03.2013
comment
Я использую относительную компоновку, но я попробую весовой подход в линейной компоновке, думаю, это может помочь... Спасибо... :)   -  person Vikram Singh    schedule 06.03.2013


Ответы (5)


Привет, вы можете поместить все свои изображения в папку с возможностью рисования, а затем создать такие папки макета.

Макет-маленький

Макет-большой

Макет-xlarge

Чтобы вы могли получить доступ ко всем изображениям из одной и той же папки с возможностью рисования, и во время запуска приложения оно автоматически создает папки с возможностью рисования в корзине в соответствии с их размерами, чтобы не возникало конфликтов и перекрытий. Так проверь вот так..............

person androidgeek    schedule 06.03.2013
comment
См. документацию по квалификаторам конфигурации. Я думаю, это поможет. - person thomas88wp; 06.03.2013
comment
@androidgeek: изображения какого размера я должен хранить в папке с возможностью рисования ..?? - person Vikram Singh; 06.03.2013
comment
вы можете хранить все размеры изображений в папке с возможностью рисования, но сделать разницу, например, изображение logo.png для маленького экрана, вы также можете без проблем сохранить logo_large.png в той же папке, а также не хотите создавать drawable-hdpi и т. д. ......... - person androidgeek; 06.03.2013
comment
ооо... я не знал об этом подходе... не могли бы вы привести еще несколько примеров именования изображений для разных разрешений... потому что я думаю, что проблема сохранится, поскольку оба устройства снова будут получать доступ к одному и тому же изображению, скажем, logo_large_hdpi.png.... пожалуйста помоги... - person Vikram Singh; 06.03.2013
comment
Это ужасный подход, пожалуйста, не делайте этого. Помещение всех ваших изображений в корневую папку для рисования приведет к их масштабированию во время выполнения, что снизит качество изображения и производительность. - person Kevin Coppock; 06.03.2013
comment
Например, у меня есть размер изображения 45 * 45 для размера экрана 240 * 320, который я называю logo_small.png, и размер изображения 120 * 120 для большого экрана, я называю его как logo_large.png и 256 * 256 для Xlarge я называю его как logo_xlarge.png, и я поместил все эти изображения в drawable, и я получаю доступ из папок с макетами разных размеров экрана ........ - person androidgeek; 06.03.2013
comment
С какой стати вам это делать, если вы можете просто поместить их в drawable-mdpi, drawable-hdpi и позволить Android справиться с этим так, как он должен. Черт, если вам нужно выбрать изображения на основе размера экрана (например, большой, xlarge), что необычно, но неважно, вы можете поместить их в drawable-large, drawable-xlarge. Ваши изображения ВСЕ ЕЩЕ БУДУТ масштабироваться, если вы поместите их в корневую папку для рисования. - person Kevin Coppock; 06.03.2013

Поместите папку drawable и сохраните изображения нужного размера (пусть это будет 30px * 20px), добавьте это в свой макет.

person Danny    schedule 06.03.2013

В дополнение к ответу @androidgeek, чтобы удовлетворить ваши конкретные потребности, вы можете создать эту папку макета.

разрешение/макет-sw600dp

в этом макете вы можете создать макет для разрешения устройства 600 * 1024, и вы можете использовать отдельные чертежи для этого макета.

Также вы можете попробовать взять только изображения xhdpi и изменить их размер во время выполнения из вашего кода, что, конечно, не рекомендуется, но в большинстве случаев эффективно.

person Aashish Bhatnagar    schedule 06.03.2013

Здесь много дезинформации. Само по себе разрешение не определяет плотность пикселей. Экран размером 480 x 800 пикселей может быть ldpi, mdpi, hdpi, xhdpi или xxhdpi. Вы не можете определить, в какое ведро плотности попадает экран, только по его разрешению. Квалификаторы ldpi, mdpi и т. д. сообщают вам ПЛОТНОСТЬ пикселей на дюйм (примерно — они не точны, но близки). Экран hdpi будет иметь около 240 пикселей на 1 дюйм экрана, экран mdpi будет иметь около 160 и т. д.

Вы не можете использовать плотность для определения разрешения. Период.

Если вы пытаетесь создать приложение, которое работает на очень специфических разрешениях, я бы предложил вместо этого разработать для iOS.

person Kevin Coppock    schedule 06.03.2013

Разные устройства получают изображения из разных папок, это недостаток устройств Android, даже если это вкладка, в которой нет необходимости получать изображения из drawable-xlarge. Для этого я бы посоветовал вам сделать разные папки для разных устройств. если вы делаете приложение, которое будет отлично работать на всех устройствах. пытаться

drawable-ldpi

drawable-mdpi

Drawable-hdpi

Drawable-xhdpi

Drawable-sw600

Drawable-большой-hdpi

прежде всего папки охватывают почти все устройства. Вам не нужно вставлять разные изображения в каждую папку для разных устройств, потому что, если у вас есть изображения в папке hdpi, тогда mdpi и ldpi автоматически масштабируют эти изображения, в некоторых случаях может быть возможно, что изображения не подходят должным образом для тех случаев, когда вы должны вставить изображения в соответствии с его размером.

person hemantsb    schedule 06.03.2013