Ho riscontrato il seguente problema. Quando una bitmap viene caricata dalle risorse da un'applicazione in esecuzione su Ice Cream Sandwich, verrà probabilmente visualizzata in modo errato come se fosse stata decodificata nel formato, che differisce dal formato corrente della finestra, senza applicare alcun dithering. Tuttavia, sia, il formato di decodificazione e il formato della finestra sono stati esplicitamente impostare:Le bitmap su ICS sono caricate con un formato pixel errato
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
e
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Ecco le schermate del test app preso da this article esecuzione sul emulatore con ICS 4.0.3 (che dà gli stessi risultati su HTC HD2):
RGBA_8888
(32-bit) formato finestra, vari formati di decodifica bitmap:
RGB_565
(16-bit) formato finestra, vari formati di decodifica bitmap:
Parecchie cose potrebbero essere notati:
- dithering flag non viene presa in considerazione di volta in volta ;
- Il formato di finestra predefinito per ICS sembra essere
RGB_565
; - L'unica buona gradiente di sguardo appare con
RGB_565
formato finestra eRGBA_8888
formato bitmap decodifica.
Questo problema è anche stata riportata in queste domande, ma ancora nessuna soluzione può essere trovato lì:
Awful background image quality in Android
Il quistion è, come affrontare tutti questi formati su ICS, per essere più precisi, come rendere ICS caricare i bitmap con il formato RGBA_8888
e come impostare il formato della finestra su RGBA_8888
in modo che questi bitmap vengano visualizzati correttamente?
C'è una differenza tra l'emulatore e il dispositivo in queste condizioni? –
No, entrambi mostrano lo stesso comportamento –