一、实现原理与所需技术

Android刮刮乐效果的实现,自定义view,绘制出中奖信息,将一张图片绘制在中奖信息的上层,通过onTouchEvent监听用户手势,通过path记录绘制轨迹,设置绘制方式为DST_OUT,对view进行重绘,当达到一定阈值的时候,不在绘制图片只绘制中奖信息。实现效果图如下:

二、绘制中奖信息

canvas绘制在bitmap上,所以在onMeasure ()方法中,首先初始化bitmap和canvas

初始化画笔:

然后我们绘制一个圆角矩形,在矩形的中间显示中奖信息:

初始化显示文字的矩形框,将文字绘制在中间位置:

此时运行,显示的效果为上图我们看到的直接显示中奖信息。

三、绘制刮刮乐图片

 BitmapFactory.decodeResource(getResources(), R.mipmap.fg_guaguaka);

我们首先获得绘制的bitmap,fg_guaguaka是一张图片,大家可任意选择,

同样在onDraw方法中绘制bimap

此时运行我们看到的效果是,未刮开之前的效果。

四、‘刮’实现

刮实现主要对用户手势进行监听,通过path.moveto(),进行轨迹的绘制,完成后通过调用invalidate()方法进行重绘。用户按下的时候记录当前的x y坐标,移动的时候通过判断x y的变化值,判断用户有没有移动,为了防止过于敏感操作,所以我们设置移动距离小于3的时候,不做操作,当大于3的时候,进行轨迹绘制。

当我们抬起的时候,需要判断用户是否刮开了较大区域(自己设定的阈值),如果是的,就直接显示出中奖信息,否则用户继续刮。

五、判断用户是否刮开了较大区域

判断用户是否刮开了较大区域,主要是通过获取bitmap上的像素点信息。获取像素宽高,则整体面积为h * w ,新建长度为h * w的以为数组,通过bitmap.getPixels(pix, 0, w, 0, 0, w, h);获取像素信息,如果某一点的值为0,则说明这一点无像素,即被刮开,则被刮开的面积要增加一个像素点。通过计算已刮开面积与总面积的百分比,我们设定当超过60%的时候,说明用户刮开了较大区域,直接显示出中奖信息,也就是不在对图片进行绘制,只绘制中奖信息。通过添加boolean标志位,当为true的时候在onDraw()方法中只绘制中奖信息即可。通过postInvalidate()使之重绘。

最终即实现刮刮乐效果。

源码地址:https://download.csdn.net/download/huangliniqng/10484392

Android实现 刮刮乐效果相关推荐

  1. android 实现刮刮乐刮奖效果

    在做电商类产品时,经常会有一些活动需求,如抽奖,抽奖的一种方式就是刮刮乐,这次的内容是利用重写View的方式实现刮刮乐的效果. 思路:利用Bitmap做刮奖区的蒙版,利用paint将手指触摸过的区域置 ...

  2. 【自定义控件】Android仿刮刮乐|刮刮卡|橡皮擦效果

    背景:需要实线一个类似刮刮乐的擦一擦效果,要求是在图片上覆盖半透明蒙层,蒙层支持手势擦除(类似橡皮擦). 思路:使用自定义View在onDraw时进行绘制,绘制模式选择混合模式(叠加变透明). 示例: ...

  3. 【Android界面实现】使用Canvas对象实现“刮刮乐”效果

    在淘宝.京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱.从客户端的体验来说,这种效果应该是通过网页来实现的,那么,我们使用Android的自带控件 ...

  4. Android实现彩票刮刮乐效果

    在一些应用,比如支付宝.天猫app我们经常能够看到一些刮奖的功能效果,通过用户手指滑动模拟出"刮刮乐"刮奖的视觉效果,让用户有一种刮彩票时候那种"爽"的感觉. ...

  5. Android涂鸦技术及刮刮乐示例分析

    概述: 很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点.下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和刮刮乐. ...

  6. Android 撕衣服(刮刮乐游戏)

    项目简单介绍: 该项目为撕衣服,相似刮刮乐游戏 具体介绍: 用户启动项目后.载入一张图片,当用户点击图片的时候,点击的一片区域就会消失.从而显示出在这张图片以下的图片 这个小游戏相似与刮奖一样,刮开涂 ...

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

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

  8. 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果

    先给大家展示效果: 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. ...

  9. iOS 仿支付宝刮刮乐效果

    支付宝里有个刮刮乐中奖, 和大街小巷里的类似彩票刮刮乐的效果一样. 实现思路, 其实很简单的三步: 展示刮出来的效果的view: 即刮开后刮刮乐效果展示-显示的文字Label 设置遮挡在外面的Imag ...

最新文章

  1. 关于JavaScript中name的意义冲突
  2. BZOJ1555 KD之死
  3. vivi eboot wince 烧写
  4. 2018年第九届蓝桥杯—C/C++程序设计省赛解题
  5. php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...
  6. RePast J介绍
  7. Visual Studio Code 取色器插件 取色选取 插件安装和使用
  8. 记录一下weui文档地址
  9. 微信小程序手写输入法input和textarea获取不到值
  10. 应届生求职应聘简历PPT模板
  11. qsnctf 骑士CMS01 wp
  12. 【机器学习-斯坦福】学习笔记1 - 机器学习的动机与应用
  13. django.db.utils.OperationalError: (2003, Can't connect to MySQL server on ‘127.0.0.1’)
  14. 百趣代谢组学分享:HSFB2b通过促进类黄酮生物合成赋予大豆耐盐能力
  15. 如何查看JAVA某个进程下的线程
  16. 数据库、表的创建与修改
  17. 干货分享|只发摘要也可以被SCIE检索吗?
  18. 华为轮值董事长郭平:华为重申不造车
  19. 5G基站射频传导测试研究与应用
  20. Oracle 真的有参数可以 1s 统计完 200G用户下的所有对象么?

热门文章

  1. 【2016-10-14收获】Cloud IDEs
  2. matlab机械臂运动仿真
  3. ListView的简单使用《一》—普通图文展示案例
  4. 2020-03-12-脑电分析之线性与非线性变换
  5. import 模块大小写问题
  6. Go 1.16中值得关注的几个变化
  7. 元宇宙带来的游戏变革会是怎样的?
  8. 关闭/删除“设备和驱动器”里的图标(如迅雷下载、WPS网盘)
  9. 分子动力学模拟之SETTLE约束算法
  10. 游戏自定义金币单位换算管理类