Подтвердить что ты не робот

Как я могу определить, какой размер (в пикселях) должен отображаться для Android, чтобы отображать это изображение правильно на устройствах?

У меня есть два изображения, которые я хочу отобразить в своем приложении.

Первое изображение должно быть полноэкранным (в качестве фона для приложения). Я несколько раз читал статью "Поддержка нескольких экранов" на developers.android.com, но я все еще не понимаю, какой размер должен быть для каждого изображения. Я попытался использовать точные размеры, но при просмотре приложения на больших экранах (т.е. 1280x800 @mdpi), я обнаружил, что фон кажется пиксельным. Это понятно, так как мое изображение для mpdi - 320x480 пикселей. Как я могу это исправить? Какое изображение размера следует использовать?

Второе изображение - это кнопка. В настоящее время у меня есть изображение с очень высоким разрешением, но приложение масштабирует его, чтобы он выглядел отлично. Тем не менее, я не хочу, чтобы это было так, когда приложение было выпущено. Для этого изображения мне нужно знать, какой размер в пикселях должен быть. В настоящее время в приложении находится 60dp x 50dp. Что бы это преобразовать в пикселях? Я знаю, что использовать формулу px = dp * (dpi / 160), но что будет в этом случае? Я не могу использовать NinePatch PNG для этого изображения.

Я не понимаю, какой размер (в пикселях) для начала моих изображений, чтобы они отображались правильно на устройствах Android. Имеет ли dp = px, если вы находитесь на устройстве mdpi?

UPDATE:

Через несколько часов после того, как я ударил головой, я придумал следующее:

drawable-xlarge-xhdpi   2560x1920px
drawable-large-xhdpi    1920x1440px
drawable-normal-xhdpi   1280x960px

drawable-xlarge-hdpi    1920x1440px
drawable-large-hdpi     1440x1080px
drawable-normal-hdpi    960x720px

drawable-xlarge-mdpi    1280x960px
drawable-large-mdpi     960x720px
drawable-normal-mdpi    640x480px

drawable-xlarge-ldpi    960x720px
drawable-large-ldpi     720x540px
drawable-normal-ldpi    480x360px

Это будут мои доступные каталоги и максимальное разрешение, которое я ожидаю для каждого из них (я решил не поддерживать небольшие экраны). Поэтому мои изображения будут такими размерами.

Он отлично выглядит на моем телефоне. Я не вижу никаких артефактов. Он также работает над эмулятором для экрана с разрешением 1280x800 @mpdi, поэтому, надеюсь, он будет работать на всех устройствах...

Кто-нибудь видит проблему с этим? Есть лучший способ сделать это? Правильно ли мои вычисления выглядят?

4b9b3361

Ответ 1

здесь вы идете, я получил его здесь, я просто передал его

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
Generalised Dpi values for screens:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

px = dp*dpi/160

Ответ 2

Использовать метод в ответе JRowan, и вы можете добавить нужные изображения для специальных экранов в папки res, как здесь:

res/drawable-xlarge-mdpi/background.png

или

res/drawable-sw600dp-mdpi/background.png
...