PorterDuffXfermode实现刮刮卡效果
2017-03-21 17:25
267 查看
//自定义view继承view
}
public class XfermodeView extends View { private Context context; private Path path; private Canvas mcanvas; private Paint mpanit; private Bitmap bgBitmap; private Bitmap fgBitmap; public XfermodeView(Context context) { this(context, null); } public XfermodeView(Context context, AttributeSet attrs) { super(context, attrs); // this.context=context; initView(); } private void initView() { mpanit = new Paint(); mpanit.setAlpha(0);//透明度设置为0显示檫除效果, //portduff进行图层混合时也会计算透明通道的值,混合后会显示底层的图片 mpanit.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); //使用dis_in模式将路径绘制到到前面覆盖的图层上面 mpanit.setStyle(Paint.Style.STROKE); mpanit.setStrokeWidth(50); mpanit.setStrokeCap(Paint.Cap.ROUND);//让笔触连接处圆滑 mpanit.setStrokeJoin(Paint.Join.ROUND);//让笔触连接处圆滑 path = new Path(); bgBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.lock_screen_houma);//设置背景图片 fgBitmap = Bitmap.createBitmap(bgBitmap.getWidth(), bgBitmap.getHeight(), Bitmap.Config.ARGB_8888); mcanvas = new Canvas(fgBitmap);//根据背景图片绘制灰色区域 mcanvas.drawColor(Color.GRAY);//设置画布颜色 } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.reset(); path.moveTo(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE: path.lineTo(event.getX(), event.getY());//绘制线条 break; } mcanvas.drawPath(path, mpanit); invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(bgBitmap,0,0,null);//默认画笔绘制背景 canvas.drawBitmap(fgBitmap,0,0,null);//绘制灰色区域 }
}
相关文章推荐
- PorterDuffXfermode实现Android刮刮卡效果
- PorterDuffXfermode 实现刮刮卡效果
- PorterDuffXfermode ——实现刮刮卡效果
- Android 自定义View之PorterDuffXfermode的使用(刮刮卡的效果实现)
- 自定义view之PorterDuffXfermode实现刮刮卡
- Android使用PorterDuffXfermode实现遮罩效果
- android之刮刮卡中奖效果PorterDuffXfermode与paint属性详解
- 使用PorterDuffXfermode实现橡皮檫效果(可实现Showcase效果)
- 自定义View通过PorterDuffXfermode实现图片遮罩效果
- android Xfermode PorterDuffXfermode 实现遮罩层
- 实现仿微信聊天时发送图片的形状(NinePatch+PorterDuffXfermode)
- 微信底部导航渐变效果-----viewpager&PorterDuffXfermode
- 使用PorterDuffXfermode实现遮罩层
- 使用PorterDuffXfermode实现遮罩层
- PorterDuffXfermode实现圆角、圆形头像
- 关于PorterDuffXferMode效果出不来的问题
- 关于使用PorterDuff.Mode.CLEAR实现丧心病狂的高亮效果
- 初学PorterDuffXfermode(实现刮刮乐)
- 使用PorterDuffXfermode画出刮刮奖效果p146-p148
- 利用 2D 图形和 PorterDuffXferMode 等实现被遮罩的图片