【发布时间】:2012-02-24 06:07:12
【问题描述】:
我遇到了以下问题。当运行在 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);
这里是test app 的屏幕截图,取自this article,在带有 ICS 4.0.3 的模拟器上运行(它在 HTC HD2 上给出了相同的结果):
RGBA_8888(32位)窗口格式,各种位图解码格式:
RGB_565(16位)窗口格式,各种位图解码格式:
有几点可以注意到:
- 不时考虑抖动标志;
- ICS 的默认窗口格式似乎是
RGB_565; - 唯一好看的渐变出现在
RGB_565窗口格式和RGBA_8888位图解码格式。
在这些问题中也报告了这个问题,但仍然没有找到解决方案:
Awful background image quality in Android
问题是,如何在 ICS 上处理所有这些格式,更准确地说,如何使 ICS 加载具有RGBA_8888 格式的位图以及如何将窗口格式设置为RGBA_8888 以便正确显示这些位图?
【问题讨论】:
-
在这些条件下模拟器和设备有区别吗?
-
不,它们都表现出相同的行为
标签: android drawable android-4.0-ice-cream-sandwich