半透明的白色位图显示为不透明的白色
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)
那么我们可以看到半透明:
我正在尝试创建具有半透明背景(不是黑色)的位图。我使用下一个代码:
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)
那么我们可以看到半透明: