2015-05-04 3 views
4

Каждое устройство Android имеет плотность физического пикселя и «квантованную плотность». Sources утверждают, что квантованная плотность является той, которая используется для определения того, как выбираются и масштабируются образы dpi-dpi.Как квантованная плотность влияет на выбор и масштабирование ресурсов изображения?

Вопрос: как именно эти изображения (1) выбраны и (2) масштабированы?

Например, изображение размером 64x64, помещенное в ковш drawable-xhdpi, масштабируется до какого размера?

ответ

8

Для масштабирования части вопроса, сначала нужно получить квантованного плотность для устройства, запустив

adb shell getprop ro.sf.lcd_density 

и называем это квантуется плотности для устройства. В общем, эта квантованная плотность отличается от физической плотности устройства, но может быть такой же, если физическая плотность отлично падает как одна из границ «ковша». В то время как физическая плотность описывает измерение в реальном мире, квантованная плотность устанавливаются производителем устройства, и обычно выбирается, чтобы быть одним из следующих значений:

Квантовая плотность контролирует то, что я буду называть коэффициентом масштабирования изображения (ISF) для устройства. Формула выглядит следующим образом:

ISF = ro.sf.lcd_density/160 

ИСБ масштабного коэффициент, который используется, когда ресурсы загрузка/макет-менеджер Android читает битовую карту ресурса из файла и выводит его на экран (я не знаю, если масштабирование происходит во время загрузки или времени рендеринга). На устройстве Nexus 6 ISF равен 3,5, потому что квантованная плотность была установлена ​​равной 560 (и 560/160 = 3,5). Разумеется, размер рендеринга во время выполнения также является функцией рисованного ведра, содержащего данный файл. Например, на Nexus 6:

  • 64-пиксель изображения в папке MDPI отображается, как 224 пикселей (с 3,5 * 64/1,0 = 224)
  • 64-пиксель изображения в папке ИПЧР отображается, как 149 пикселей (с 3,5 * 64/1,5 = 149)
  • 64-пиксельное изображение в папке xhdpi отображается как 112 пикселей (с 3,5 * 64/2.0 = 112)
  • 64-пиксельное изображение в папке xxhdpi отображает 75 пикселей (с 3,5 * 64/3.0 = 75)
  • 64-пиксельное изображение в папке xxxhdpi отображается как 56 пикселей (начиная с 3,5 * 64/4,0 = 56)

Кстати, квантованная плотность также определяет физический размер dp, который вы указываете в файлах макета. Формула для этого метода:

+=======================+ 
|   Dq   | 
| 1dp = ----- px  | 
|   160   | 
+=======================+ 

где Dq - квантованная плотность. Например,

  • на устройстве которого Ид 160, 1DP = 1px
  • на устройстве которого составляет 240 Dq, 1 dp = 1.5px
  • на устройстве с Dq 320, 1dp = 2px
Смежные вопросы