自定义View(简单一个画板)

画板

  • 代码

public class PaintView extends View {

    private Paint mPaint;//画笔工具
    private Path mPath;//路径

    public PaintView(Context context) {
        super(context);
        init();
    }

    public PaintView(Context context,  AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public PaintView(Context context,  AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.STROKE);//设置画笔为边线样式,另外还有FILL全填充
        mPaint.setColor(Color.BLACK);//设置画笔颜色
        mPaint.setStrokeWidth(5);//设置边线宽度

        mPath = new Path();//新建路径
    }

    /**
     * @author dingtao
     * @date 2018/11/29 4:44 PM
     *
     * 触摸方法
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()){
            case MotionEvent.ACTION_UP://手指抬起
                break;
            case MotionEvent.ACTION_DOWN://手指按下,路径移动到触摸点
                mPath.moveTo(event.getX(),event.getY());//路径移动到触摸点
                break;
            case MotionEvent.ACTION_MOVE://手指移动
                mPath.lineTo(event.getX(),event.getY());//路径连线到移动的点
                break;
        }
        invalidate();//刷新控件,回调onDraw方法
        return true;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawPath(mPath,mPaint);//画路径
    }
  • 布局

    直接托自定义控件就可以

  • 效果
    可以拓展 + 一个圆形放在画板中
    实现触摸圆形,拖动圆形的效果
    在这里插入图片描述

修改方法中的值就可以

public boolean onTouchEvent(MotionEvent event) {
        x = event.getX();
        y = event.getY();
       /* switch (event.getAction()){
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                mPath.moveTo(event.getX(),event.getY());
                break;
             case MotionEvent.ACTION_DOWN:
                 mPath.lineTo(event.getX(), event.getY());
                 x = event.getX();
                 y = event.getY();
                 break;
        }*/
        //*****************
        invalidate();
        return true;
    }
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //canvas画布****
    canvas.drawCircle(x,y,100,myPaint);
    //canvas.drawPath(mPath,myPaint);
}

猜你喜欢

转载自blog.csdn.net/qq_43589739/article/details/84644171