PNG 在 Android 中失去透明度(如果其所有像素都不透明)
PNGs losing transparency in Android (if all its pixels are not transparent)
我有一个有两个视图的应用程序 - 一个在另一个之上。在顶部,我使用了从 PNG 资源加载的位图 (ARGB_8888),我使用它的 alpha 通道使其某些部分消失,以便下面的那个变得可见。如果源图像至少有一个透明像素开始,则一切正常。但是如果源 PNG 没有透明像素,那么将它的 alpha 更改为 0 会使我更改为黑色的像素,而不是透明的。
有什么办法可以解决吗?任何类似的东西:
aaptOptions {
cruncherEnabled = false
}
但另一种选择?
目前,我在编译之前修改了源图像,方法是制作一小块区域"semi-transparent",但我想避免这种情况。
好的。终于明白了。
我不得不添加一行。而不是:
mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true);
我现在正在使用:
mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true);
mBitmap.setHasAlpha(true);
并且无需在源图像上添加透明像素!
我有一个有两个视图的应用程序 - 一个在另一个之上。在顶部,我使用了从 PNG 资源加载的位图 (ARGB_8888),我使用它的 alpha 通道使其某些部分消失,以便下面的那个变得可见。如果源图像至少有一个透明像素开始,则一切正常。但是如果源 PNG 没有透明像素,那么将它的 alpha 更改为 0 会使我更改为黑色的像素,而不是透明的。
有什么办法可以解决吗?任何类似的东西:
aaptOptions {
cruncherEnabled = false
}
但另一种选择?
目前,我在编译之前修改了源图像,方法是制作一小块区域"semi-transparent",但我想避免这种情况。
好的。终于明白了。
我不得不添加一行。而不是:
mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true);
我现在正在使用:
mBitmap = BitmapFactory.decodeResource(getResources(), getResourceID()).copy(Bitmap.Config.ARGB_8888, true);
mBitmap.setHasAlpha(true);
并且无需在源图像上添加透明像素!