Я запутался в PixelFormat на Android.
Мое устройство - Motorola Defy.
У меня есть два вопроса:
- В Android 2.3
getWindowManager().getDefaultDisplay().getPixelFormat()
возвращается 4, что означает RGB_565. Насколько я знаю, у моего устройства 16M цветов, это означает, что 3 (или 4 с альфа-каналом) байтов на пиксель:
2^(8*3) = 2^24 = 16M
Но формат RGB_565
имеет 2 байта (16 бит) на пиксель, что означает 65 тыс. цветов:
2^(8*2) = 2^16 = 65K
Итак, почему getPixelFormat()
не возвращает формат с 3 (или 4, как RGBA) байтами на пиксель? Это проблемы с драйверами драйверов или что-то еще? Могу ли я установить PixelFormat
в RGBA_8888 (или аналог)?
- В Android 4.1 (пользовательский rom)
getPixelFormat()
возвращает 5. Но это значение недокументировано. Что это означает? Фактически, в этой ситуации эффект такой же, как с константой4
. Но из это обсуждение я обнаружил, что 5 означаетRGBA_8888
(но для этого утверждения нет доказательств), Итак, как я могу определить реальный формат экрана устройства? Также я нашел одно китайское устройство на Android 2.2, которое также имеетPixelFormat
5, но реальный формат 4 (как моя Motorola).
Я задал эти вопросы и не нашел ничего. Единственное, что я нашел, это то, что nexus 7 также имеет 5 форматов.
Update:
Я нашел метод getWindow().setFormat()
, но на самом деле он не меняет формат основного пикселя.