Android实现 刮刮乐效果
一、实现原理与所需技术
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实现 刮刮乐效果相关推荐
- android 实现刮刮乐刮奖效果
在做电商类产品时,经常会有一些活动需求,如抽奖,抽奖的一种方式就是刮刮乐,这次的内容是利用重写View的方式实现刮刮乐的效果. 思路:利用Bitmap做刮奖区的蒙版,利用paint将手指触摸过的区域置 ...
- 【自定义控件】Android仿刮刮乐|刮刮卡|橡皮擦效果
背景:需要实线一个类似刮刮乐的擦一擦效果,要求是在图片上覆盖半透明蒙层,蒙层支持手势擦除(类似橡皮擦). 思路:使用自定义View在onDraw时进行绘制,绘制模式选择混合模式(叠加变透明). 示例: ...
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
在淘宝.京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱.从客户端的体验来说,这种效果应该是通过网页来实现的,那么,我们使用Android的自带控件 ...
- Android实现彩票刮刮乐效果
在一些应用,比如支付宝.天猫app我们经常能够看到一些刮奖的功能效果,通过用户手指滑动模拟出"刮刮乐"刮奖的视觉效果,让用户有一种刮彩票时候那种"爽"的感觉. ...
- Android涂鸦技术及刮刮乐示例分析
概述: 很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点.下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和刮刮乐. ...
- Android 撕衣服(刮刮乐游戏)
项目简单介绍: 该项目为撕衣服,相似刮刮乐游戏 具体介绍: 用户启动项目后.载入一张图片,当用户点击图片的时候,点击的一片区域就会消失.从而显示出在这张图片以下的图片 这个小游戏相似与刮奖一样,刮开涂 ...
- Android自定义view实现刮刮乐
已经有两个月没有更新博客了,其实这篇文章我早在两个月前就写好了,一直保存在草稿箱里没有发布出来.原因是有一些原理性的东西还没了解清楚,最近抽时间研究了一下混合模式,终于也理解了刮刮乐是怎么实现的,所以 ...
- 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果
先给大家展示效果: 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. ...
- iOS 仿支付宝刮刮乐效果
支付宝里有个刮刮乐中奖, 和大街小巷里的类似彩票刮刮乐的效果一样. 实现思路, 其实很简单的三步: 展示刮出来的效果的view: 即刮开后刮刮乐效果展示-显示的文字Label 设置遮挡在外面的Imag ...
最新文章
- 关于JavaScript中name的意义冲突
- BZOJ1555 KD之死
- vivi eboot wince 烧写
- 2018年第九届蓝桥杯—C/C++程序设计省赛解题
- php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...
- RePast J介绍
- Visual Studio Code 取色器插件 取色选取 插件安装和使用
- 记录一下weui文档地址
- 微信小程序手写输入法input和textarea获取不到值
- 应届生求职应聘简历PPT模板
- qsnctf 骑士CMS01 wp
- 【机器学习-斯坦福】学习笔记1 - 机器学习的动机与应用
- django.db.utils.OperationalError: (2003, Can't connect to MySQL server on ‘127.0.0.1’)
- 百趣代谢组学分享:HSFB2b通过促进类黄酮生物合成赋予大豆耐盐能力
- 如何查看JAVA某个进程下的线程
- 数据库、表的创建与修改
- 干货分享|只发摘要也可以被SCIE检索吗?
- 华为轮值董事长郭平:华为重申不造车
- 5G基站射频传导测试研究与应用
- Oracle 真的有参数可以 1s 统计完 200G用户下的所有对象么?