android canvas bitmap去底部黑色,Android Bitmap擦除后留下黑色背景(硬件加速相关)...

需求和问题

需求是在一个自定义view中放置两张重叠的bitmap,然后局部擦除顶部的那一张图,以此可以看到底部的图片。

大致思路:

//底部的图片已经通过其他方式绘制完成

canvas.drawBitmap(topBitmap, 0f, 0f, null)

// 画笔的建立需要在onDraw外面执行,这里为了叙述方便才放在这里

val clearPaint = Paint()

clearPaint.xfermode = PorterDuffXfermode(PorterDuff.Mode.XOR)

canvas.drawCircle(x, y, r, clearPaint)

但是并没有出现预期的效果,在drawCircle的地方,显示的背景为黑色,并不能看到底部的背景图。

网上的说法

1. 图片的格式问题,JPEG不支持透明。

但是这里并没有用到图片本身的透明属性,而是将整个canvas或是bitmap“设置为透明”。另外,按照这种说法,所有设置透明度时只能使用png格式的图片,不符合现实状况,也不利于用户使用。

2. Bitmap.Config

顺便复习一下

Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as well as the ability to display transparent/translucent colors.

这个属性代表了Bitmap可以的配置情况。一个配置描述的是这些像素信息是如何存储

你可能感兴趣的:(android,canvas,bitmap去底部黑色)