public class DrawClear extends View {
private Paint myPaint; //自定义的画笔
private Bitmap myBitmap;// 实现双缓存绘图的 Bitmap
private Canvas myCanvas;
private List<Point> points;
int i;
private float x;
private float y;
public DrawClear(Context context) {
this(context,null);
}
public DrawClear(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public DrawClear(Context context,AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
points = new ArrayList<>();
}
//初始化画笔
private void initPaint() {
if (myPaint == null) {
myPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
myPaint.setStyle(Paint.Style.FILL);
myPaint.setColor(Color.BLACK);
//设置画笔的粗细
myPaint.setStrokeWidth(10);
//设置划线是线的圆角
myPaint.setStrokeJoin(Paint.Join.ROUND);// 圆角
myPaint.setStrokeCap(Paint.Cap.ROUND);
myPaint.setPathEffect(new CornerPathEffect(50));
// PahtEfect指笔迹的风格,CornerPathEffect在拐角处添加弧度,弧度半径50像素点 linePaint.setStyle(Style.STROKE);// 设置画笔风格
//设置画笔
// myPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
if (width == 0) {
width = getWidth();
}
if (height == 0) {
height = getHeight();
}
Log.e(TAG, "onMeasure: DrawClear" + width + " ==" + height);
//初始化 自己用来缓存的Bitmap 与画布
if (myBitmap == null) {
myBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
myCanvas = new Canvas(myBitmap);
myCanvas.drawColor(Color.BLUE);
}
//设置被刮去的图片
// Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
// //在被刮去图片上在画上显示的字
// Paint paint = new Paint();
// myCanvas.drawBitmap(bitmap, 0, 0, paint);
// paint.setColor(Color.BLACK);
// paint.setStrokeWidth(20);
// paint.setTextSize(50);
// myCanvas.drawText("刮一刮", 50, 100, paint);
}
/**
* 滑动事件 判断
*
* @param
* @return
*/
int size = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
Log.e("rrr","走进了点击"+action);
switch (action) {
case MotionEvent.ACTION_DOWN:
Path path = new Path();
x = event.getX();
y = event.getY();
Log.e("rrr","走进了点击1");
break;
case MotionEvent.ACTION_MOVE:
Log.e("rrr","滑动");
int a = (int) event.getX();
int b = (int) event.getY();
Point point = new Point(a, b);
points.add(point);
//记录最后的点
size = points.size() - 1;
if (size > 0) {
//只画出最后的两个点之间的线
myCanvas.drawLine(points.get(size - 1).x, points.get(size - 1).y, points.get(size).x, points.get(size).y, myPaint);
// myCanvas.drawLine(x,y, points.get(size).x, points.get(size).y, myPaint);
}
invalidate();
break;
case MotionEvent.ACTION_UP:
Log.e("rrr","走进了点击33");
//清理所有记录的点
points.clear();
break;
}
return true;
}
public Bitmap getB(){
return myBitmap;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (myBitmap == null) {
Log.e("rrr","kong");
return;
}
Log.e("rrr",""+(i++));
canvas.drawBitmap(myBitmap, 0, 0, null);
}
}
自定义view电子签名
最新推荐文章于 2021-05-29 16:16:18 发布
1334

被折叠的 条评论
为什么被折叠?



