安卓刮刮乐效果demo
来源:互联网 发布:2016年cms系统排行榜 编辑:程序博客网 时间:2024/05/29 11:04
代码:
package com.example.myapp.view;import android.content.Context;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 yanru.zhang on 16/7/21. * Email:yanru.zhang@renren-inc.com */public class EraserView extends View { private int width,height; private Paint mPaint; private PorterDuffXfermode porterDuffXfermode; private Path mPath; private int downX,downY,moveX,moveY,lastX,lastY,upX,upY; private int bgColor = Color.GRAY; private int paintWidth = 50; public EraserView(Context context) { this(context,null); } public EraserView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public EraserView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setLayerType(LAYER_TYPE_SOFTWARE,null); mPaint = new Paint(); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(paintWidth); porterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.XOR); mPath = new Path(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if(w!=oldw || h!=oldh){ width = w; height = h; } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(bgColor); mPaint.setXfermode(porterDuffXfermode); canvas.drawPath(mPath,mPaint); mPaint.setXfermode(null); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastX = downX = (int)event.getX(); lastY = downY = (int)event.getY(); mPath.moveTo(downX,downY); break; case MotionEvent.ACTION_MOVE: moveX = (int)event.getX(); moveY = (int)event.getY(); mPath.quadTo((lastX+moveX)/2,(lastY+moveY)/2,moveX,moveY); invalidate(); lastX = moveX; lastY = moveY; break; case MotionEvent.ACTION_UP: upX = (int)event.getX(); upY = (int)event.getY(); mPath.quadTo(lastX,lastY,upX,upY); invalidate(); break; } return true; } public void setPaintWidth(int width){ this.paintWidth = width; mPaint.setStrokeWidth(width); } public void setBgColor(int color){ bgColor = color; }}
1 0
- 安卓刮刮乐效果demo
- OGRE DEMO 效果截图
- Android 抽屉效果Demo
- ios FlowCover效果demo
- Android开发效果Demo
- 倒计时效果demo
- 毛玻璃效果demo
- 时钟效果demo
- QML翻转效果Demo
- 控制台效果Demo
- 拖动效果简易制作(demo)
- ios 全景浏览效果demo
- ios 自制放大镜效果demo
- ios 全景浏览效果demo
- ligerUI的拖动效果demo
- iOS侧拉栏抽屉效果Demo
- Android摇一摇振动效果Demo
- ios 动画效果实现demo
- 1100. Mars Numbers (20)-PAT甲级真题
- 将搜索二叉树转换成有序的双向链表
- 1002. A+B for Polynomials (25)-PAT甲级真题
- Nginx配置文件详细说明
- 哈希表
- 安卓刮刮乐效果demo
- Word Search
- poj2342 Anniversary party
- Same Tree
- C语言程序设计练习2(窗口服务指示系统3.5 )
- 1001. A+B Format (20)-PAT甲级真题
- UESTC 2016 Summer Training #10 Div.2(未完待续)
- Codeforces 77A Heroes
- 1005. Spell It Right (20)-PAT甲级真题