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

在Android自定义View中,尝试通过canvas擦除Bitmap时遇到底部黑色残留问题。分析了图片格式、Bitmap.Config及硬件加速的影响。通过关闭硬件加速(setLayerType(View.LAYER_TYPE_SOFTWARE, null))成功解决问题。" 121350063,11116807, ActivereportsJs 在线设计器内置数据源教程,"['JavaScript', 'Web开发', '报表工具', 'Visual Studio Code', 'HTML']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求和问题

需求是在一个自定义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可以的配置情况。一个配置描述的是这些像素信息是如何存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值