Android 画图之刮刮乐效果
来源:互联网 发布:知乎周刊plus网盘 编辑:程序博客网 时间:2024/05/29 18:15
刮刮乐效果实现起来代码量不多,很简单。
主要是理解PorterDuffXfermode,它是一种集合概念,交集、并集等图像的混合显示模式。
需要注意的是两个图层交集区域的显示 方式,dst是先画的图形,src是后画的图形。
这里使用DST_IN模式将贝塞尔曲线路径绘制钱面覆盖的图层即可。
这里使用DST_IN模式将贝塞尔曲线路径绘制钱面覆盖的图层即可。
直接上源码 :就一个自定义ImageView类
public class XfermodeView extends ImageView{
private Bitmap mBgBitmap,mFgBitmap;
private Paint mPaint;
private Canvas mCanvas;
private Path mPath;
public XfermodeView(Context context,AttributeSet attrs) {
super(context,attrs);
init();
}
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();
Drawable drawable =getDrawable();
mBgBitmap=((BitmapDrawable)drawable).getBitmap();
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) {
// TODO Auto-generated method stub
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;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mBgBitmap, 0, 0,null);
canvas.drawBitmap(mFgBitmap, 0, 0,null);
}
}
2 0
- Android 画图之刮刮乐效果
- Android画图之Matrix
- Android画图之Matrix
- android画图之Bitmap
- android画图之paint
- android画图之canvas
- android 画图之setXfermode
- Android画图之Matrix
- 【Android】画图之Matrix
- Android画图之Matrix
- android 画图之setXfermode
- android 画图之setXfermode
- android 画图之setXfermode
- android 画图之setXfermode
- Android画图之Matrix
- android 画图之setXfermode
- android 画图之setXfermode
- Android之setXfermode 画图
- Go和HTTPS
- 树莓派 将系统写入SD卡
- Jetty之AbstractHandler
- iis配置大全
- KinectV2的入门
- Android 画图之刮刮乐效果
- buddy system
- Python基础语法——循环(三)
- ZeroMQ(java)中的数据流SessionBase与SocketBase
- 协同过滤推荐 公式梳理
- php实现qq第三方登录
- Linux的df命令
- ZeroMQ(java)中对IO的封装(StreamEngine)
- 【USACO4.2.1】草地排水 网络流 最大流