2016-09-10 5 views
4

두 개의보기가있는 앱이 하나 있습니다. 맨 위에는 PNG 리소스에서로드 한 비트 맵 (ARGB_8888)을 사용하고 그 알파 채널을 사용하여 일부 부분을 사라지게하므로 아래에있는 내용이 표시됩니다. 원본 이미지에 적어도 하나의 투명한 픽셀이 있으면 모두 잘 작동합니다. 그러나 소스 PNG에 투명한 픽셀이 없으면 알파를 0으로 변경하면 픽셀이 검정색으로 변경되고 투명하지 않게됩니다.안드로이드에서 투명도를 잃는 PNG (모든 픽셀이 투명하지 않은 경우)

어떤 아이디어로 해결할 수 있습니까? 좋아요 :

aaptOptions { 
    cruncherEnabled = false 
} 

다른 옵션은 무엇입니까?

현재 소스 이미지를 "반투명"한 작은 영역을 만들어 컴파일하기 전에 수정하지만 피하고 싶습니다.

+0

본 질문이 있으십니까 http://stackoverflow.com/questions/2881939/android-read-png-without-alpha-and-decode-as-argb-8888? –

+0

투명도 (32 비트)가없는 경우 이미지와 거의 비슷한 소리가 24 비트입니다. 따라서 파일을 32 비트로 저장하거나 저장하는 것처럼 알파를 갖기 위해 변환 할 필요가 있다는 대답은 정확합니다. –

답변

3

확인. 마침내 얻었습니다.

한 줄을 추가해야했습니다. 대신에 :

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); 

지금 사용하고 있습니다!

관련 문제