Я столкнулся со следующей проблемой.Когда какое-либо растровое изображение загружается из ресурсов приложением, работающим в Ice Cream Sandwich, оно, вероятно, будет отображаться неправильно, как если бы оно было декодировано в формате, который отличается от текущего формата окна, без применения дизеринга.Однако и формат декодирования, и формат окна были явно установлены:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
и
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Вот скриншоты тестового приложения , взятые из эта статья работает на эмуляторе с ICS 4.0.3 (он дает те же результаты в HTC HD2):
RGBA_8888
(32-бит) формат окна , различныеформаты декодирования растрового изображения:
RGB_565
(16 бит) формат окна , различные форматы декодирования растрового изображения:
Можно отметить несколько вещей:
- Флаг сглаживания не учитывается время от времени;
- Кажется, что формат окна по умолчанию для ICS
RGB_565
; - Единственный хорошо выглядящийпоявляется градиент с
RGB_565
форматом окна и RGBA_8888
форматом декодирования растрового изображения .
Эта проблема также сообщалась в этих вопросах, но все еще нетрешение можно найти здесь:
Проблема совместимости градиента - по умолчанию ICS имеет меньше цветов, чемВсе предыдущие версии Android
Ужасное качество фонового изображения в Android
Вопрос в том, как работать со всеми этими форматами в ICS, чтобы быть болееточно, как заставить ICS загружать растровые изображения в формате RGBA_8888
и как установить формат окна в RGBA_8888
, чтобы эти растровые изображения отображались правильно?