代码其实比较简单,这种需求一般出现在图库软件里面,可以让用户,触摸来在图片上面写字,画圈圈之类的。反正就是记录触摸轨迹吧。

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;}

没有了。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)解决监听home键的几种方法
  3. 【Android(安卓)开发教程】使用Intent调用内置应用程序
  4. ButterKnife--View注入框架
  5. android 顶部横向滑动菜单效果
  6. android打开手机相册获取真正的图片路径
  7. Android(安卓)中使用 ServiceLoader、AutoService 摔坑记录
  8. Android(安卓)setWallpaper()设置壁纸
  9. Android之Retrofit实现Log日志输出

随机推荐

  1. 十七、Android学习笔记_Android 使用 搜
  2. Android   Intent 的几种启动活动的方式
  3. Button代码小写,运行时大写
  4. Android 4.0.3 源码编译中添加外部jar包
  5. Android Jetpack-ViewModel
  6. Android 按钮点击两次触发不同的事件
  7. java\tomcat\android\mysql 环境变量
  8. Android中fitsSystemWindows属性的用法总
  9. Android-->获取所有联系人以及所有的字段
  10. Android(安卓)MVC框架模式的理解