Ответ 1
Как и другие, в онлайн-документации Android есть отличные статьи об этом. Тем не менее, я попытаюсь перечислить здесь несколько быстрых и полезных советов:
- Рассмотрим MDPI
1
. Затем LDPI имеет значение0.75
, а HDPI -1.5
. Это означает, что если на экране MDPI есть растягиваемый, скажем,50x50
, он должен быть~37x37
на экране LDPI и75x75
на экране HDPI, , чтобы появиться примерно на одном физическом уровне на каждом экране (т.е. 2 см, если вы поместите линейку на экран). Кроме того, экран вашего компьютера, скорее всего, является MDPI, поэтому рекомендуется начинать с MDPI-чертежей, а затем изменять их размер: размер физического размера для рисования будет очень близок между вашим экраном компьютера и MDPI Android устройство. Если вы просматриваете HDPI, выгружаемый на вашем компьютере и на устройстве HDPI, вы заметите, что он намного больше (опять же, физически - поместите линейку в этот стиль) на Экран ПК. - Если вы не предоставляете специальные чертежи для каждой плотности, Android будет масштабировать ближайший доступный автоматически.
- Вы не должны рассматривать DPI устройства как нечто, имеющее отношение к размеру экрана и/или количеству пикселей, и/или разрешение и/или соотношение сторон. Устройство может быть очень маленьким и иметь экран HDPI или очень большой и иметь экран LDPI. Весь смысл этой дифференциации плотности состоит в том, чтобы вещи выглядели одинаковыми размерами на всех устройствах, не для всех устройств. Например, если вырезаемый заполняет весь экран на одном устройстве MDPI, не ожидайте, что он сделает то же самое на другом устройстве MDPI. Кроме того, не ожидайте "увидеть одно и то же" на разных устройствах DPI. Большинство устройств HDPI на самом деле имеют больше, чем более низкие устройства DPI. Например, если
ListView
может отображать 5 элементов на устройстве MDPI, он может отображать 6 элементов на устройстве HDPI, несмотря на то, что элементыListView
имеют одинаковую плотность (т.е. в 1,5 раза больше на HDPI, чем на MDPI).
Возможно, я немного оторвался, но это то, чему я научился вовремя, ударив головой о них. Просто пытаясь спасти кого-то еще головную боль:)