Android 橡皮擦功能,图层混合模式PorterDuff.Mode实践

本文详细介绍了在Android中如何使用图层混合模式,包括设置图层类型为软件模式、离屏绘制、理解目标图像和源图像、清除混合模式等关键步骤,并提供了一个EraserView的示例代码,展示了如何实现橡皮擦效果,通过SRC_OUT模式将源图像与目标图像混合,达到擦除效果。

先上效果图:

 

 使用图层混合模式注意点:

1.图层类型设置为软件类型,有些api不支持硬件类型,默认视图是没有开启图层的

setLayerType(LAYER_TYPE_SOFTWARE, null);

2.创建新的图层来完成混合模式的运算(离屏绘制),然后更新到原始图层。如果直接在原始图层进行混合模式运算,原始图层的某些操作可能会影响混合模式运算结果,得不到预期的效果

//离屏绘制
int layer = canvas.saveLayer(0, 0, width, height, paint);
//......
//......
//恢复图层
canvas.restoreToCount(layer);

3.搞清楚哪个是目标图像,哪个是源图像,我的理解是先绘制目标图像,画笔设置混合模式,然后绘制的是源图像

//绘制目标图像
canvas.drawBitmap(dstBitmap, 0, 0, paint);
//设置混合模式
paint.setXfermode(porterDuffXfermode);
//绘制源图像
canvas.drawBitmap(srcBitmap, null, srcRect, paint);

4.混合模式计算完之后,清除画笔设置的混合模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值