【问题标题】:PNGs losing transparency in Android (if all its pixels are not transparent)PNG在Android中失去透明度(如果它的所有像素都不透明)
【发布时间】:2016-09-23 03:34:28
【问题描述】:

我有一个具有两个视图的应用程序 - 一个在另一个之上。在顶部,我使用从 PNG 资源加载的位图 (ARGB_8888),并使用其 alpha 通道使其某些部分消失,因此下面的部分变得可见。如果源图像至少有一个透明像素开始,则一切正常。但是,如果源 PNG 没有透明像素,则将其 alpha 更改为 0 会使我更改为黑色的像素,而不是透明的。

有什么想法可以解决它吗?类似的东西:

aaptOptions {
    cruncherEnabled = false
}

但另一种选择?

目前我在编译前修改源图像,将其一小部分区域设置为“半透明”,但希望避免这种情况。

【问题讨论】:

  • 你见过stackoverflow.com/questions/2881939/…这个问题吗?
  • 如果您的图像没有透明度(32 位),几乎听起来像是 24 位。因此,在像您一样加载它或将文件本身保存为 32 位时需要将其转换为具有 alpha 的答案是正确的。

标签: android png alpha-transparency


【解决方案1】:

好的。终于明白了。

我不得不添加一行。而不是:

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

并且不需要在源图片上添加透明像素!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2011-06-22
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多