2016-09-10 1 views
4

J'ai une application avec deux vues - l'une sur l'autre. Dans la partie supérieure, j'utilise un bitmap (ARGB_8888) chargé à partir d'une ressource PNG et je joue avec sa couche alpha pour en faire disparaître certaines parties, de sorte que celle ci-dessous devient visible. Tout fonctionne bien si l'image source a au moins un seul pixel transparent pour commencer. Mais si le PNG source n'a pas de pixels transparents, alors le changement de alpha à 0 rend le pixel que j'ai changé en noir, pas transparent.PNG perdre la transparence dans Android (si tous ses pixels ne sont pas transparents)

Toutes les idées que pourrait-on faire pour le réparer? quelque chose comme:

aaptOptions { 
    cruncherEnabled = false 
} 

mais une autre option?

Actuellement, je modifie les images source avant de compiler en en faisant une petite zone "semi-transparente", mais je voudrais éviter cela.

+0

avez-vous vu cette question http://stackoverflow.com/questions/2881939/android-read-png-image-without-alpha-and-decode-as-argb-8888? –

+0

On dirait presque que vos images étaient en 24bit si elles n'avaient pas de transparence (32 bits). Vous avez donc raison de devoir convertir Alpha en le chargeant comme vous le faites ou en sauvegardant le fichier lui-même en 32 bits. –

Répondre

3

Ok. Je l'ai finalement eu.

Je devais ajouter une ligne. Au lieu de:

mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true); 

J'utilise maintenant:

mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true); 
mBitmap.setHasAlpha(true); 

et il n'y a pas besoin d'ajouter un pixel transparent sur l'image source!