L'aspetto bitmap non sembra buono, il dithering non funziona, in Android
Domanda
Voglio usare la vista Coverflow nella mia app. Per ottenere la parte dell'immagine di riflessione ho usato il seguente codice - http://www.androidsnippets.com/create-image-with-reflection
Ho visto molti forum/discussioni su Dithering e Tilemode, ho provato tutto ciò che discusse, ma nulla funziona per me.
FYI - Sto creando una bitmap dinamicamente non usando alcun bitmap nei layout. E ho allegato l'immagine per mostrare quanto è grave:
Ho elencato di seguito ciò che ho cercato di risolvere questo problema.
1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_DITHER, WindowManager.LayoutParams.FLAG_DITHER);
2. getWindow().setFormat(PixelFormat.RGBA_8888);
3. BitmapDrawable baseImageDawable = new BitmapDrawable(getResources().openRawResource(imageId));
baseImageDawable.setDither(true);
baseImageDawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
Bitmap originalImage = baseImageDawable.getBitmap();
int width = originalImage.getWidth();
int height = originalImage.getHeight();
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, 0, width, height, matrix, true);
Ma l'immagine di riflessione è ancora molto brutta.
Come posso risolvere questo?
Soluzione 2
Ho trovato la posizione dove dovrei impostare la configurazione. Durante la creazione della bitmap di riflessione, imposta la configurazione come argb_8888. Sta lavorando adesso.
Altri suggerimenti
Hmmm. "Penso" il tuo problema è che la tua bitmap non viene creata come argb_8888 (nonostante la tua chiamata setFormat). Vorrei "suggerire" invece di creare BitMap Drawable usando OpenRawResource, utilizzare BitmapFactory e assicurarti di specificare Bitmap.config.argb_8888. Quindi rendi il tuo disegno dalla bitmap. Solo un pensiero-duro per indovinare a questa distanza senza essere in grado di fare un passo con Eclipse. Potresti trovare questo articolo interessante: http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-tshoring/
EDIT: Quindi, il problema, a quanto pare, era nella chiamata di creare un altro uso utilizzato per allocare l'immagine di riflessione. Morale della storia (IMHO): non utilizzare mai i metodi CreateBitMap che non consentono di specificare esplicitamente Bitmap.Config. Altrimenti, come potrebbe dire Forrest Gump, non sai mai cosa otterrai.