как узнать, какой телефон поддерживает какой макет (hdpi, mdpi и xhpi)?

Я немного смущен тем, как определить, какие телефоны поддерживают какие типы компоновки. Я провел некоторое исследование, но не нашел удовлетворительного ответа.

например, я нашел инструкции ниже:

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

тем не менее, у меня все еще есть некоторые проблемы:

  1. Samsung grand (480*800) и HTC wild fire S (320*480) оба поддерживают MDPI. Эти экраны имеют очень разные разрешения, но имеют одинаковый макет тип?

  2. Galaxy note 2 (1280*720) поддержка HDPI. Если HD (720p) - это только HDPI, когда какое устройство/разрешение поддерживает XHDPI?

  3. Я уже задавал вопрос здесь: Как установить макет на 7" два разных планшета?.

  4. мой самый важный вопрос, однако, таков: Как узнать, какие устройства или разрешения экрана поддерживают каждый тип макета?

2 ответов


Android рассматривает mdpi (160 пикселей/дюйм) как базовую плотность. Так для mdpi устройств, 1 dp = 1 пиксель. При более высокой плотности на дюйм приходится больше пикселей (240 для hdpi, 320 для xhdpi).

автоматическое масштабирование самим Android:

Android пытается сделать графические изображения занимают те же физические размеры на экране независимо от плотности пикселей устройства. Итак, если все, что он находит, это mdpi ресурс, и устройство hdpi, он будет масштабировать графику на 240/160 = 150%, и это удвоит размер графики для xhdpi.

использование различных версий графики:

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

Примечание : пиксели / дюйм, которые были сохранены в файле изображения, не имеют к этому никакого отношения. Все это основано на том, где вы помещаете графические файлы в каталог ресурсов для своего проекта. любые графики размещены в res/холст предполагаются оптимальные размеры для mdpi экранов, как и графика, размещенные в res/холст-mdpi. файлы изображений, которые он находит в res / drawable-hdpi, как предполагается, имеют правильный размер для дисплеев hdpi и т. д. Когда ваша программа работает на определенном устройстве, Android сначала будет искать графику, которая соответствует плотности отображения этого устройства. Если он не находит его, а вместо этого находит его для другой плотности, он будет использовать это и автоматически масштабировать изображение на основе вышеуказанных правил.

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

в в точках между ними:

ldpi = 1:0.75
mdpi = 1:1
hdpi = 1:1.5
xhdpi = 1:2
xxhdpi = 1:3

Итак, давайте возьмем изображение с размером около 100X100:

for mdpi it should be 100X100
for ldpi it should be 75X75
for hdpi it should be 150X150
for xhdpi it should be 200X200
for xxhdpi it should be 300X300

таким образом, для экранов с одинаковым размером, но разным DPI все изображения на экране кажутся одинаковыми.


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

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density