这次带来一个涂鸦画板控件。之前一个项目里需要做一个功能:用户在屏幕上签名,然后将签名保存成图片。于是就顺手写了这个
控件,起个名字叫DrawView,这里拿出来给大家分享一下。
首先说一下原理。原理其实很简单,我们在屏幕上画的一笔,本质上就是一堆坐标点的集合,把这个集合保存在Path中,然后调用
canvas.drawPath就可以把这条线画出来了。而触控产生的坐标点可以在onTouchEvent里采集。
上DrawView本体:
DrawView.java:
public class DrawView extends View {
private Context context;
// 线宽
private int lineWidth;
// 线颜色
private int lineColor;
private Paint paint;
private ArrayList<Path> list;
public DrawView(Context context) {
this(context, null);
}
public DrawView(Context context, AttributeSet attrs) {
this(context, attrs, -1);
}
public DrawView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
this.context = context;
if (paint == null) paint = new Paint();
if (list == null) list = new ArrayList<>();
lineWidth = lineWidth != 0 ? lineWidth : dp2px(5);
lineColor = lineColor != 0 ? lineColor : Color.parseColor("#000000");
paint.setStrokeWidth(lineWidth);
paint.set