时间:2021-05-20
先看看实现的效果
这个场景主要是模拟我们有些app里面的刮刮乐中奖的效果,主要是利用Android的proterDuffXfermode这个类去实现的。
proterDuffXfermode
在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果。PorterDuffXfermode的功能十分的强大,其他的应用场景这里就不多介绍,主要是看,刮刮乐的实现和原理。
public class PorterDuffXfermode extends XfermodePorterDuffXfermode 继承了Xfermode,使用的时候注意的API是Paint.setXfermode(Xfermode xfermode)。
PorterDuffXfermode支持以下十几种像素颜色的混合模式,分别为:CLEAR、SRC、DST、SRC_OVER、DST_OVER、SRC_IN、DST_IN、SRC_OUT、DST_OUT、SRC_ATOP、DST_ATOP、XOR、DARKEN、LIGHTEN、MULTIPLY、SCREEN。
这里是使用PorterDuff.Mode.DST_IN,取两层绘制交集,显示下层。这个模式,来进行操作的。
自定义view继承ImageView
代码比较少,我就直接来了
首先有两个bitmap,一个是背景(刮刮乐的照片),一个是前置的(灰色遮挡)。
这里解释一下几个API
别的API都好理解,这里就不介绍了。
onTouchEvent事件分发
主要使用了Path
Path封装了由直线和曲线(二次,三次贝塞尔曲线)构成的几何路径。你能用Canvas中的drawPath来把这条路径画出来(同样支持Paint的不同绘制模式),也可以用于剪裁画布和根据路径绘制文字。我们有时会用Path来描述一个图像的轮廓,所以也会称为轮廓线(轮廓线仅是Path的一种使用方法,两者并不等价)。
Path详解 如果不了解可以看下这篇文章
moveTo 移动下一次操作的起点位置
lineTo 添加上一个点到当前点之间的直线到Path
主要用到了这两个api
最后就是onDraw().
XML直接引用自定义view即可。
当然,实现这个功能可能还有其它写法,这里只是提供一种思路,也是最简单的实现。
欢迎关注公众号 拖鞋王子猪 一起开心起来。
到此这篇关于Android刮刮乐效果-proterDuffXfermode的文章就介绍到这了,更多相关Android刮刮乐内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
刮刮乐怎么做?本文实例为大家分享了JavaScript实现刮刮乐效果的具体代码,供大家参考,具体内容如下来这我教你1、首先准备好编程软件webStorm或者ec
本文实例为大家分享了JavaScript实现刮刮乐的具体代码,供大家参考,具体内容如下原理鼠标按住移动的时候,实现刮刮乐的效果,那就是鼠标按下的同时鼠标移动,那
微信公众号有很多都做刮刮乐的活动,本文就实现了刮刮乐的效果,具体代码如下:首先要做一个类似橡皮擦的东西吧,然后才能把纸上的笔迹擦除/***FileName:Sp
效果图代码XML/HTMLCode复制内容到剪贴板CSS3模拟刮刮乐.card{border:1pxsolid#000;-webkit-box-shadow:1
本文实例为大家分享了微信小程序实现刮刮乐效果的具体代码,供大家参考,具体内容如下效果图设计流程设计思路canvas设置背景图,作为中奖图片;在canvas上绘制