Android 手写签名控件是一种可以让用户在屏幕上使用手指或其他输入设备(如笔)来绘制自己的签名的控件。它可以用于各种用途,如法律文书、电子合同等。
Android 手写签名控件是一种可以让用户在屏幕上使用手指或其他输入设备(如笔)来绘制自己的签名的控件。它可以用于各种用途,如法律文书、电子合同等。
是一个简单的 Android 手写签名控件的代码:
public class SignatureView extends View {
private Paint paint;
private Path path;
private float lastX;
private float lastY;
private Bitmap bitmap;
private Canvas canvas;
public SignatureView(Context context) {
super(context);
init();
}
public SignatureView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public SignatureView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
paint.setColor(Color.BLACK);
path = new Path();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = event.getX();
lastY = event.getY();
path.moveTo(lastX, lastY);
break;
case MotionEvent.ACTION_MOVE:
float x = event.getX();
float y = event.getY();
float dx = Math.abs(x - lastX);
float dy = Math.abs(y - lastY);
if (dx > 3 || dy > 3) {
path.quadTo(lastX, lastY, (x + lastX) / 2, (y + lastY) / 2);
lastX = x;
lastY = y;
}
break;
case MotionEvent.ACTION_UP:
canvas.drawPath(path, paint);
path.reset();
break;
}
invalidate();
return true;
}
public void clear() {
if (canvas != null) {
path.reset();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
invalidate();
}
}
public Bitmap getSignatureBitmap() {
return bitmap;
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(15条)