android 利用path 实现手写板的手写效果
16lz
2021-01-25
代码其实比较简单,这种需求一般出现在图库软件里面,可以让用户,触摸来在图片上面写字,画圈圈之类的。反正就是记录触摸轨迹吧。
public class TouchView extends View { private float currentX; private float currentY; private Paint paint; private Path path; public TouchView(Context context) { super(context); } public TouchView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public TouchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public TouchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); paint = new Paint(); paint.setAntiAlias(true); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(getResources().getDimension(R.dimen.paint_width)); paint.setStrokeCap(Paint.Cap.ROUND); path = new Path(); } @Override public boolean onTouchEvent(MotionEvent event) { currentX = event.getX(); currentY = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(currentX, currentY); break; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: path.lineTo(currentX, currentY); break; } postInvalidate(); return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path, paint); }}
代码这就行了,比较简单。效果类似下面这种:
不要在意图片和大红背景色
需要注意的地方:
switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(currentX, currentY); // 这里是 moveTo break; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: path.lineTo(currentX, currentY); // 这里是 lineTo break;}
没有了。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- Android(安卓)解决监听home键的几种方法
- 【Android(安卓)开发教程】使用Intent调用内置应用程序
- ButterKnife--View注入框架
- android 顶部横向滑动菜单效果
- android打开手机相册获取真正的图片路径
- Android(安卓)中使用 ServiceLoader、AutoService 摔坑记录
- Android(安卓)setWallpaper()设置壁纸
- Android之Retrofit实现Log日志输出