本文实例为大家分享了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刮刮卡效果实现代码_第1张图片

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

更多相关文章

  1. Android进阶2之检索Android的图片库并显示图片详细信息
  2. Android保存图片到系统图库
  3. 【Android】获取图片和视频缩略图
  4. Android使用HttpClient下载图片
  5. android切换到后台,返回后图片纹理丢失
  6. 安卓中选择系统图库的图片及调用相机的源码(原创)
  7. EditText 各部分颜色设置小结
  8. 自定义ViewPager实现图片自动轮播无限循环

随机推荐

  1. Android 菜单(OptionMenu)大全
  2. 移动开发:Android(安卓)Media (Audio) Fr
  3. 安卓报错:AS Error inflating class andr
  4. 2015最新的 导航条《actionbar》给大家分
  5. Android LayoutEditor使Eclipse自动关闭
  6. android屏幕和view的截图
  7. Android Configuration
  8. android Vibrator开启振动功能
  9. Android 面试准备
  10. Android(安卓)JNI入门第六篇――C调用Jav