У меня возникла следующая проблема. Когда любое растровое изображение загружается из ресурсов приложением, запущенным на 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
растрового изображения.
Эта проблема также сообщалась в этих вопросах, но решения там не найдены:
Ужасное качество фонового изображения в Android
Вопрос о том, как справляться со всеми этими форматами в ICS, точнее, как сделать растровые изображения нагрузки ICS с форматом RGBA_8888
и как установить формат окна на RGBA_8888
, чтобы эти растровые изображения отображались правильно