使用PorterDuffXfermode画出刮刮奖效果p146-p148
2016-07-12 16:10
393 查看
package com.zzw.Qunyinzghuan3; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; /** * Created by zzw on 2016/7/12. * 描述: */ public class PorterDuffXfermodeView extends View { private Bitmap bgBmp, fgBmp; private Paint paint; private Canvas mCanvas; private Path path; public PorterDuffXfermodeView(Context context) { this(context, null); } public PorterDuffXfermodeView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PorterDuffXfermodeView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); paint = new Paint(); paint.setAlpha(0);//要把透明度设置为0 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND);//设置结合处的样子 Miter:结合处为锐角, Round:结合处为圆弧:BEVEL:结合处为直线。 paint.setStrokeWidth(50); paint.setStrokeCap(Paint.Cap.ROUND);// 设置画笔转弯去的连接风格 path = new Path(); bgBmp = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_test); fgBmp = Bitmap.createBitmap(bgBmp.getWidth(), bgBmp.getHeight(), Bitmap.Config.ARGB_8888); mCanvas = new Canvas(fgBmp); 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, paint); invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { canvas.drawBitmap(bgBmp, 0, 0, null); canvas.drawBitmap(fgBmp, 0, 0, null); } }
相关文章推荐
- html用js实现导航栏的二级菜单,自动伸缩。。。
- 多么痛领悟的教训,提交js表单,服务器端接收不了表单内的文本值
- c# 在.NET使用Newtonsoft.Json转换,读取,写入json
- 引用Reference
- Js 中的preventDefault 和 stopPropagation 方法
- 判断页面div是否在显示范围之内
- jquery 验证非空
- Atom Editor 插件 atom-less 的使用方法
- 如何让div自动适应内容宽度,并且居中
- 学习Javascript闭包(Closure)
- 12jQuery formValidator插件
- 5JQuery与Ajax
- WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)
- 判断滚动条是上滑还是下滑
- 4JQuery与Dom操作
- 3JQuery与Css
- 前端开发系列(浏览器):火狐浏览器里面文字点击会出现文本输入的光标不停的闪(解决方法)
- js获取url参数值的两种方式
- CSS整体界面设计
- HTML网页开发学习笔记(燕十八)-20 margin重叠