当前位置: 首页 > 编程笔记 >

Android刮刮卡效果实现代码

张唯
2023-03-14
本文向大家介绍Android刮刮卡效果实现代码,包括了Android刮刮卡效果实现代码的使用技巧和注意事项,需要的朋友参考一下

本文实例为大家分享了Android刮刮卡效果,供大家参考,具体内容如下

android实现底层一张图片,上层一个遮罩层,触摸滑动按手指滑动路径实现去除遮罩效果,类似于抽奖的刮刮卡一样,不多说先上张效果图:

直接上代码:

XfermodeView.java 

/** 
 * Created by 57 on 2016-4-21. 
 */ 
public class XfermodeView extends View{ 
 private Bitmap mBgBitmap,mFgBitmap; 
 private Paint mPaint; 
 private Canvas mCanvas; 
 private Path mPath; 
 
 public XfermodeView(Context context) { 
 super(context); 
 init(); 
 } 
 
 
 public XfermodeView(Context context, AttributeSet attrs) { 
 super(context, attrs); 
 init(); 
 } 
 
 public XfermodeView(Context context, AttributeSet attrs, int defStyleAttr) { 
 super(context, attrs, defStyleAttr); 
 init(); 
 } 
 
 @Override 
 protected void onDraw(Canvas canvas) { 
 
 canvas.drawBitmap(mBgBitmap,0,0,null); 
 canvas.drawBitmap(mFgBitmap,0,0,null); 
 } 
 
 
 private void init() { 
 mPaint = new Paint(); 
 mPaint.setAlpha(0); 
 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 
 mPaint.setStyle(Paint.Style.STROKE); 
 mPaint.setStrokeJoin(Paint.Join.ROUND); 
 mPaint.setStrokeWidth(50); 
 mPaint.setStrokeCap(Paint.Cap.ROUND); 
 mPath = new Path(); 
 mBgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test5); 
 mFgBitmap = Bitmap.createBitmap(mBgBitmap.getWidth(),mBgBitmap.getHeight(),Bitmap.Config.ARGB_8888); 
 mCanvas = new Canvas(mFgBitmap); 
 mCanvas.drawColor(Color.GRAY); 
 
 } 
 
 @Override 
 public boolean onTouchEvent(MotionEvent event) { 
 switch(event.getAction()){ 
  case MotionEvent.ACTION_DOWN: 
  mPath.reset(); 
  mPath.moveTo(event.getX(),event.getY()); 
  break; 
  case MotionEvent.ACTION_MOVE: 
  mPath.lineTo(event.getX(),event.getY()); 
  break; 
 } 
 mCanvas.drawPath(mPath,mPaint); 
 invalidate(); 
 return true; 
 } 
} 

Xfermode有三个子类 :
AvoidXfermode  指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。
PixelXorXfermode  当覆盖已有的颜色时,应用一个简单的像素异或操作。
PorterDuffXfermode  这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint

如何与已有的Canvas图像进行交互。

从上面我们可以看到PorterDuff.Mode为枚举类,一共有16个枚举值:
1.PorterDuff.Mode.CLEAR 
  所绘制不会提交到画布上。
2.PorterDuff.Mode.SRC
   显示上层绘制图片
3.PorterDuff.Mode.DST
  显示下层绘制图片
4.PorterDuff.Mode.SRC_OVER
  正常绘制显示,上下层绘制叠盖。
5.PorterDuff.Mode.DST_OVER
  上下层都显示。下层居上显示。
6.PorterDuff.Mode.SRC_IN
   取两层绘制交集。显示上层。
7.PorterDuff.Mode.DST_IN
  取两层绘制交集。显示下层。
8.PorterDuff.Mode.SRC_OUT
 取上层绘制非交集部分。
9.PorterDuff.Mode.DST_OUT
 取下层绘制非交集部分。
10.PorterDuff.Mode.SRC_ATOP
 取下层非交集部分与上层交集部分
11.PorterDuff.Mode.DST_ATOP
 取上层非交集部分与下层交集部分
12.PorterDuff.Mode.XOR
  异或:去除两图层交集部分
13.PorterDuff.Mode.DARKEN
  取两图层全部区域,交集部分颜色加深
14.PorterDuff.Mode.LIGHTEN
  取两图层全部,点亮交集部分颜色
15.PorterDuff.Mode.MULTIPLY
  取两图层交集部分叠加后颜色
16.PorterDuff.Mode.SCREEN
  取两图层全部区域,交集部分变为透明色

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍简单实现Android刮刮卡效果,包括了简单实现Android刮刮卡效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android仿刮刮卡效果展示的具体代码,供大家参考,具体内容如下 一、Xfermode 通过使用Xfermode将绘制的图形的像素和Canvas上对应位置的像素按照一定的规则进行混合,形成新的像素,再更新到Canvas中形成最终的图形,使用的时候都是

  • 本文向大家介绍2种jQuery 实现刮刮卡效果,包括了2种jQuery 实现刮刮卡效果的使用技巧和注意事项,需要的朋友参考一下 其中拖拽刮涂层效果使用jquery UI的draggable方法 以下是源代码: 这里给大家分享的是十分常用的刮奖的特效代码,希望小伙伴们能够喜欢。

  • 本文向大家介绍Android刮刮卡功能具体实现代码,包括了Android刮刮卡功能具体实现代码的使用技巧和注意事项,需要的朋友参考一下 今天整理之前的代码,忽然看到之前自己写的一个刮刮卡,整理下以便以后使用,同时分享给需要的朋友,如有错误,还请多多指正。 实现的步骤,其实就是徒手画三个图层叠加在一起,最上层是绘制需要的问题,就是以上所述的“骚年,刮我吧”,第二层就是覆盖宽高的灰层,第三层是结果层,

  • 本文向大家介绍Android刮刮卡实现原理与代码讲解,包括了Android刮刮卡实现原理与代码讲解的使用技巧和注意事项,需要的朋友参考一下 实现刮刮卡我们可以Get到哪些技能? * 圆形圆角图片的实现原理 * 双缓冲技术绘图 * Bitmap获取像素值数据 * 获取绘制文本的长宽 * 自定义View的掌握 * 获取屏幕密度 * TypeValue.applyDemension * Canvas的一

  • 本文向大家介绍Android开发之自定义刮刮卡实现代码,包括了Android开发之自定义刮刮卡实现代码的使用技巧和注意事项,需要的朋友参考一下 关于刮刮卡的实现效果不需要做太多解释,特别是在电商APP中,每当做活动的时候都会有它的身影存在,趁着美好周末,来实现下这个效果,也算是对零碎知识点的一个整合。 所涉及的知识点: 1、自定义View的一些流程 2、双缓冲绘图机制 3、Paint的绘图模式

  • 本文向大家介绍20行JS代码实现网页刮刮乐效果,包括了20行JS代码实现网页刮刮乐效果的使用技巧和注意事项,需要的朋友参考一下 分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码 效果如下 盖伦.jpg 刮刮乐.gif HTML部分 没什么要特别注意的 为了效果加了些CSS样式 CSS部分 注意 1.为了清除浏览器自带效果加了 2.img需要在灰布下面,加了z-index