我遇到以下問題。當運行在冰淇淋三明治上的應用程序從資源加載任何位圖時,它可能會被錯誤地渲染,就好像它已被解碼爲與當前窗口格式不同的格式,而不應用任何抖動。然而,兩者的解碼格式和窗口格式已明確設置:ICS上的位圖加載了錯誤的像素格式
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
和
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
下面是this article與ICS 4.0.3在模擬器中運行所採取的test app的截圖(它給上HTC HD2相同的結果):
RGBA_8888
(32位)窗口格式,各種位圖解碼格式:
RGB_565
(16位)窗口格式,各種位圖解碼格式:
幾件事情可以注意到:
- 抖動標誌沒有被考慮不時;
- ICS的默認窗口格式似乎是
RGB_565
; - 唯一好看梯度出現帶有
RGB_565
窗口格式和RGBA_8888
位圖解碼格式。
這個問題也有報道這些問題,但仍然沒有解決方案可以在那裏找到:
Awful background image quality in Android
的quistion是,如何處理所有這些格式在ICS上,更準確地說,如何使ICS加載位圖格式爲RGBA_8888
,以及如何將窗口格式設置爲RGBA_8888
,以便這些位圖可以正確顯示?
在這些條件下仿真器和設備是否有區別? – 2012-02-07 07:48:01
不,它們都顯示相同的行爲 – 2012-02-07 08:31:24