半透明的白色位图显示为不透明的白色

Semi-transparent white bitmap is shown like opaque white

我正在尝试创建具有半透明背景(不是黑色)的位图。我使用下一个代码:

    val result = drawable.bitmap.copy(Bitmap.Config.ARGB_8888, true)
    for (y in 0 until result.height) for (x in 0 until result.width) {
        val dstColor = Color.argb(100, 255, 255, 255)
        result.setPixel(x, y, dstColor)
    }

但我只看到白色不透明的白色。我尝试将 alpha 参数设置为 0,使用不同的颜色(阅读,绿色),但它不起作用。可能的原因是什么?

我测试了下一个创建仅包含图像视图 (bitmap_container id) 的布局的方法,它有效,但我需要更改背景视图组颜色才能看到它:

val bitmap = Bitmap.createBitmap(
    100,
    100,
    Bitmap.Config.ARGB_8888
)
val color = Color.argb(100, 255, 255, 255)
Canvas(bitmap).apply { drawColor(color) }
bitmap_container.setImageBitmap(bitmap)

获得位图的副本后,执行以下行创建 alpha 通道:

result.setHasAlpha(true)

其他一切都应该按原样工作。

例如,拿你的代码做如下修改:

// Get the bitmap. What the bitmap is doesn't really matter. Here it is just a jpg.
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.somebitmap, null) as BitmapDrawable
val result = drawable.bitmap.copy(Bitmap.Config.ARGB_8888, true)
result.setHasAlpha(true)
val dstColor = Color.argb(100, 255, 255, 255)
for (y in 0 until result.height) for (x in 0 until result.width) {
    result.setPixel(x, y, dstColor)
}

image.setImageBitmap(result)

如果result.setHasAlpha(true)被注释掉,那么我们就会看到下图。此处图像上没有半透明。

如果我们取消注释 result.setHasAlpha(true) 那么我们可以看到半透明: