Android 自定义橡皮擦效果
2017-01-06 14:56
357 查看
自定义橡皮擦效果,使用贝塞尔曲线处理曲线转折处
public class picFingerToTest extends View { private Paint paint; private Bitmap decodeResourceSRC; private Bitmap createBitmapDST; // 手指路径,使用贝塞尔路线 private Path path; private float perX; private float perY; public picFingerToTest(Context context, AttributeSet attrs) { super(context, attrs); // 1、设置禁用硬件设置 setLayerType(View.LAYER_TYPE_SOFTWARE, null); // 2、设置手指画笔 paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(45); // 3、生成图像手指源目标 // 源 decodeResourceSRC = BitmapFactory.decodeResource(getResources(), R.drawable.welcome, null); // 目标 createBitmapDST = Bitmap.createBitmap(decodeResourceSRC.getWidth(), decodeResourceSRC.getHeight(), Config.ARGB_8888); path = new Path(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 分层绘制 int saveLayer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null,Canvas.ALL_SAVE_FLAG); // 把手指轨迹划到目标路径上 Canvas canvas2 = new Canvas(createBitmapDST); canvas2.drawPath(path, paint); // 把目标图像画到画布上 canvas.drawBitmap(createBitmapDST, 0, 0, paint); // 计算源图像区域 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); canvas.drawBitmap(decodeResourceSRC, 0, 0, paint); paint.setXfermode(null); canvas.restoreToCount(saveLayer); } //使用贝塞尔曲线,使折线过度圆滑 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { // 记录手指触摸的初始化位置 case MotionEvent.ACTION_DOWN: path.moveTo(event.getX(), event.getY()); perX = event.getX(); perY = event.getY(); return true; case MotionEvent.ACTION_MOVE: float endX = (perX + event.getX()) / 2; float endY = (perY + event.getY()) / 2; path.quadTo(perX, perY, endX, endY); perX = event.getX(); perY = event.getY(); postInvalidate(); break; case MotionEvent.ACTION_UP: break; default: break; } return super.onTouchEvent(event); } }
相关文章推荐
- Android中的Button自定义点击效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法,附网上2种经典解决方法。
- Android 自定义Activity漂亮跳转效果
- Android自定义ScrollView实现反弹效果
- Android自定义View实现HTML图文环绕效果
- 利用Android自定义View实现转盘旋转的效果
- Android自定义Gallery,实现CoverFlow效果
- Android自定义ScrollView实现反弹效果
- android自定义ImageButton按钮的按下效果的代码实现
- Android进阶篇-自定义ScrollView反弹效果
- Android自定义button的实现,未选中,按下,选中效果
- Android Button、ImageView等自定义选中、按下、未选中等效果
- 实现自定义view(2):仿Android QQ多屏幕显示ListView的效果
- Android中RatingBar的自定义效果
- Android之Button自定义点击效果
- Android中的Button自定义点击效果
- Android中ImageButton自定义按钮的按下效果的代码实现方法
- android幻灯片效果自定义
- Android之Button自定义点击效果
- Android 菜单开发自定义效果