Изображения в случае поддержки нескольких экранов в android
У меня есть путаница относительно поддержки нескольких экранов в android. Я прошел через Статью для поддержки нескольких экранов на форуме разработчиков android. Мой вопрос, если приложение имеет 15-20 изображений, которые должны быть показаны в полноэкранном режиме на экране устройства. Теперь, если я хочу поддержать всех экранов, что я должен поставить в трех папок drawable языки будут добавлены в ближайшее & ипчр. Вот что я сделал
В ldpi-изображениях с разрешением 240х320 mdpi-изображения 320x480 reolution hdpi-изображения с разрешением 720x800. (Я использую одинаковые плотности для всех трех разрешений) Я думаю, что это неправильный подход.
Что именно я должен делать? Поместите изображения с различным разрешением в drawable-ldpi, drawable-mdpi и drawable-hdpi, как указано выше, или я должен использовать изображения с различной плотностью 120 dpi, 160 dpi и 240 dpi. Если я использую изображения различной плотности, каким должно быть их разрешение(должно ли разрешение 120 dpi быть 240x320, разрешение 160 dpi 320x480 и разрешение 240 dpi быть 480x800). Или если я использую различные изображения dpi их разрешение должно быть одинаковым(320х480) для всех плотностей .
С уважением, Ануй
2 ответа:
В идеале у вас должны быть чертежи с разной плотностью для разных экранов. Вы можете использовать размеры, которые вы упомянули для ваших изображений. Но вы также можете предоставить только изображения с высоким разрешением dpi, и они будут уменьшены в соответствии с плотностью экрана устройства пользователя.
Кроме того, если вы хотите, чтобы изображения отображались в полноэкранном режиме, вам, возможно, придется иметь различные версии этих изображений для альбомной и портретной ориентации, а также для длинных и не длинных экранов.
И, наконец, вы можете использовать
ImageView
виджет для правильного масштабирования изображения на разных устройствах.
Ануджпрашар, на твой вопрос нет простого ответа. Различные спецификации плотностей (hdpi, mdpi, ldpi) просто относятся к среднему диапазону плотностей (т. е. hdpi составляет около 240 ppi). Однако hdpi может относиться к большому числу различных разрешений (например, Motorola Droid-hdpi, разрешение 480x854; Nexus One-hdpi, разрешение 480x800). Таким образом, нет фиксированного размера изображения, которое вы можете использовать, чтобы идеально соответствовать всем устройствам на весь экран.
Мое предложение, если вообще возможно, либо избегайте использования макета, который требует, чтобы изображения были точными размерами экрана, или вместо этого предоставьте изображение больше, чем большинство разрешений для этой целевой плотности (например, 500x900), оставляя дополнительные поля, которые могут быть обрезаны (думайте об этом как о кровотечении, если вы знакомы с этой концепцией печати).
Или более просто, если вы не требуете, чтобы они отображались 1:1 в исходном разрешении пикселей, вы можете просто установить тип масштаба ImageView в
centerCrop
и его ширину и высота доfill_parent
. Это расширит (или сгустит) изображение, чтобы соответствовать контейнеру, обрезая пиксели, если соотношение сторон не является правильным.Более сложным (и гораздо менее эффективным) методом было бы иметь различное изображение для каждого разрешения экрана, а также метод в вашем onCreate (), чтобы получить размеры экрана и установить изображение в соответствии с полученными значениями.