private Paint controlPaint;
private Path mCurrentPath;
private float startPointX;
private float startPointY;
//画贝塞尔曲线的标识--可以自定义值
private float offset = ViewConfiguration.get(getContext()).getScaledTouchSlop();
public PaintBeSaiErView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//建立路径
mCurrentPath = new Path();
//绘制时抗锯齿
controlPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//设置画笔样式
controlPaint.setStyle(Paint.Style.STROKE);
//设置画笔的粗细
controlPaint.setStrokeWidth(8);
//设置画笔颜色
controlPaint.setColor(Color.RED);
}
invalidate方法
更新UI视图 @Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
//为了方便测试,每次下落之前清空路径
mCurrentPath.reset();
float x = event.getX();
float y = event.getY();
startPointX = x;
startPointY = y;
//移动到起始点
mCurrentPath.moveTo(x, y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
float curX= event.getX();
float curY= event.getY();
float preX= startPointX;
float preY= startPointY;
if(Math.abs(preX-curX)>=offset||Math.abs(preX-curY)>=offset) {
mCurrentPath.quadTo((curX + preX) / 2, (curY + preY) / 2, curX, curY);
startPointX = curX;
startPointY = curY;
}
invalidate();
break;
}
return true;
}