前言:在电商中,常用到一些劵和红包之类,往往是通过刮刮卡效果实现,本文来自Hensn_授权本公众号独家发布, Hensen_的csdn博客链接为:http://blog.csdn.net/qq_30379689,点击阅读原文,可查看其原文。话不多说,我们一起来涨知识。

首先看下刮刮卡效果

效果图:


实现原理:

  • 下层图片:我们的红包的图片

  • 上层图片:有两部分

    • 一部分是灰色背景

    • 一部分是拥有透明度为0,并且模式为交集的画笔

  • 使用滑动监听,滑动时,用透明度为0的画笔画出透明和上层图片灰色的交集,交集即是透明的背景

  • 监听我们滑动的距离是否达到标准,达到标准后,使用子线程1s后自动展开剩余的灰色

实现步骤:

  • 初始化画笔

  • 初始化顶层图片和底层图片

  • 监听滑动事件,判断是否滑完

  • 使用onDraw()画出我们的上层图片和底层图片

下面是一些实现过程:

1

初始化画笔


画笔设置XferMode,DST_IN模式是交集模式,由于图片底层是灰色,上层是我们drawPath出来的透明度为0的路径,所以取交集,即透明的路径,达到涂刮的效果:


这两个属性可使画笔四个角变为圆角:

2

初始化底层和顶层图片

为顶层图片加上画布,并画上灰色:

3

监听滑动事件,判断是否滑完


当手指松开时,判断是否滑完,以每一次左右滑累加得到的sumX和图片的宽度4倍比较,即是用手指左右滑动两个来回,并通过1秒延迟,让子线程重绘,涂刮剩余的灰色:


记得在监听最后面重置LastY:

4

画Bitmap

我们的ondraw方法,只要判断是否滑完了,滑完了就不画上层图片:

5

在布局中应用

整个类的源码:



第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。

Android自定义View—刮刮卡效果相关推荐

  1. android 立体 流量球,Android自定义View——实现水波纹效果类似剩余流量球

    Android自定义View--实现水波纹效果类似剩余流量球 三个点   pre   ber   block   span   初始化   move   理解最近突然手痒就想搞个贝塞尔曲线做个水波纹效 ...

  2. Android自定义view实现刮刮乐

    已经有两个月没有更新博客了,其实这篇文章我早在两个月前就写好了,一直保存在草稿箱里没有发布出来.原因是有一些原理性的东西还没了解清楚,最近抽时间研究了一下混合模式,终于也理解了刮刮乐是怎么实现的,所以 ...

  3. android圆形波纹按钮,android自定义View——圆形波纹扫描效果

    蓝牙项目,考虑到后面可能会用到这个扫描的效果,所以参照大神写好的控件,增加了自己需要使用的接口.也顺便巩固一下自定义view中各种零碎的知识点. 需要的效果图 先放一个效果图,点击中心图片开始动画,再 ...

  4. Android自定义View实现QQ气泡效果

    首先我们来看一下最终的效果: 根据我们上边拆分出来的公式,我们分别看看每一个效果需要如何去实现: 红色圆:canvas.drawCircle 消息数字:canvas.drawText 拖拽粘性效果:c ...

  5. android 高仿ios开关,Android自定义view仿IOS开关效果

    本文主要讲解如何在 Android 下实现高仿 iOS 的开关按钮,并非是在 Android 自带的 ToggleButton 上修改,而是使用 API 提供的 onDraw.onMeasure.Ca ...

  6. android 环绕布局,Android自定义View实现圆形环绕效果

    之前项目中需要实现一个四周环绕中心圆形头像的效果,感觉还是自定义比较方便,于是就自己封装了一个控件去实现.先贴张图显示最终效果. 首先自定义一个View继承自LinearLayout,通过动态添加ch ...

  7. Android好评功能,Android自定义View实现五星好评效果

    本文实例为大家分享了Android实现五星好评效果的具体代码,供大家参考,具体内容如下 这个效果想必大家都非常熟悉,那么Android如何自定义实现这种效果呢? 首先自定义属性: 下面看看具体实现: ...

  8. android 光圈动画,Android 自定义View学习(4)波浪效果+光圈扩散效果

    这篇博客的效果是我仿照WPJY大神的一篇博客做的,加入了一些我自己的改动 先来看下效果 效果图上可能有些卡,但实际运行很流畅 上代码喽~~ /** * 外层的几层光环 */ private Paint ...

  9. android北京地铁源代码,Android自定义View实现地铁显示牌效果

    本文实例为大家分享了Android地铁显示牌的具体代码,供大家参考,具体内容如下 预览效果 目录 SubwayBoardView.java 代码 public class SubwayBoardVie ...

  10. android自定义水波纹,Android自定义View——实现水波纹效果类似剩余流量球(示例代码)...

    最近突然手痒就想搞个贝塞尔曲线做个水波纹效果玩玩,终于功夫不负有心人最后实现了想要的效果,一起来看下吧: 效果图镇楼 一:先一步一步来分解一下实现的过程 需要绘制一个正弦曲线(sin)或者余弦曲线(c ...

最新文章

  1. Java虚拟机学习(2):垃圾收集算法
  2. linux学习总结--linux100day(day1)
  3. 【DP】数字游戏(jzoj 2131)
  4. java编程一般类抽象类的定义,Java编程基础抽象类
  5. HDU 1203 I NEED A OFFER!(01背包)
  6. 轻松看懂机器学习十大常用算法 - 基础知识
  7. 怎么查看电脑有没有python_python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学...
  8. aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
  9. Virtual Serial Port Driver虚拟串口vspd v7.2 下载及破解方法
  10. spring boot 教程(一) 构建我的第一个Spring boot
  11. 大一高等数学期末考试试卷及答案详解
  12. 微信:公众号授权登录
  13. 杭州电子科技大学java刷题_杭州电子科技大学的OJ
  14. k8s core-dns 解析域名异常
  15. 随机数公式生成一个负数和正数之间的数_随机生成数据的公式 如何在EXCEL随机生成数字,要正负的。...
  16. c++ 求N个数的最大公约数和最小公倍数
  17. DayDayUp:2021,再见了,无论是躺平还是内卷—愿大家改变不可接受的,接受不可改变的—心若有向往,何惧道阻且长
  18. 2022年电赛A题单相交流电子负载一等奖(代码工程+PCB原理图资料)
  19. Oracle——SQL基础练习
  20. 启用 DHCP 和静态 IP 共存

热门文章

  1. matlab船舶静水力曲线,静水力曲线图
  2. Ubuntu 16.04下安装 PCL简单方法
  3. ubuntu opencv多版本控制
  4. Random walk 和 random walk with Restart理解
  5. opencv 写视频时找不到编码器问题解决方法
  6. SDOD: Real-time Segmenting and Detecting 3D Objects by Depth(实时3D检测与分割)
  7. 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
  8. 统计一个数字在排序数组中出现的次数。
  9. fixed不以body定位,相对于父级容器定位问题
  10. 两个辅助指针变量挖字符串