源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android刮刮卡效果实现代码

  • 时间:2020-04-03 12:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android刮刮卡效果实现代码
本文实例为大家分享了Android刮刮卡效果,供大家参考,具体内容如下 android实现底层一张图片,上层一个遮罩层,触摸滑动按手指滑动路径实现去除遮罩效果,类似于抽奖的刮刮卡一样,不多说先上张效果图: [img]http://files.jb51.net/file_images/article/201610/20161020112838246.gif?2016920112849[/img] 直接上代码: 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; 
 } 
} 

[b]Xfermode有三个子类 : [/b]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   取两图层全部区域,交集部分变为透明色 [img]http://files.jb51.net/file_images/article/201610/20161020112939526.jpg?2016920112947[/img] 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部