2016-09-10 8 views
4

2つのビューを持つアプリがあります。一番上には、PNGリソースからロードされたビットマップ(ARGB_8888)が使用されています。アルファチャンネルを使ってその一部を消して、下のものが表示されるようにしています。ソースイメージに少なくとも1つの透明ピクセルがある場合は、すべて正常に動作します。しかし、元のPNGに透明なピクセルがない場合、アルファを0に変更すると、ピクセルは透明にならず黒く変化します。PNGの透明性が失われる(すべてのピクセルが透明でない場合)

これを修正するために何ができましたか?次のようなもの:

aaptOptions { 
    cruncherEnabled = false 
} 

他のオプションはありますか?

現在のところ、私はソースイメージを「半透明」の小さな領域にすることによってコンパイルする前に修正しますが、それを避けたいと考えています。

+0

あなたはこの質問をご覧になりましたか?http://stackoverflow.com/questions/2881939/android-read-png-image-without-alpha-and-decode-as-argb-8888? –

+0

透明度がない(32ビット)場合、画像のようなほとんどの音は24ビットでした。だからあなたはそれを読み込んでいる間、またはファイル自体を32ビットとして保存している間にアルファを持つように変換する必要があるという答えには正しいです。 –

答えて

3

最後にそれを得た。

私は1行を追加する必要がありました。代わりに:

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

を、ソース画像の上に透明画素を追加する必要はありません。

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

私は今使用しています!

関連する問題