一个简单的练习,手写签名后,可以清空,保存,然后再相册进行查看
!简易签名板
有5个知识点,需要注意:
在SignatureView的onTouchEvent()方法中,利用mPath.quadTo()方法,使绘制路径变得圆滑
在SignatureView的save()方法中,将View中的内容保存到一个Bitmap中
在SignatureView的closeStream()方法中,所有的读写流都实现了Closeable接口,可以用来关闭流
在SignatureView的clear()方法中,利用PorterDuff.Mode.CLEAR将Canvas中绘制的内容清空
在MainActivity中,图片保存到本地后,需要向系统发送一个广播,通知相册更新
- SignatureView 控件
先通过mCanvas利用mPaint将绘制的路径保存进了mBitmap中,再将mBitmap在canvas绘制出来
public class SignatureView extends View {
private Paint mPaint;
private Path mPath;
private Canvas mCanvas;
private Bitmap mBitmap;
private float mLastX, mLastY;//上次的坐标
public SignatureView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
/***
* 初始化
*/
private void init() {
//关闭硬件加速
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//画笔
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
mPaint.setStrokeWidth(5f);
mPaint.setColor(Color.parseColor("#FF4081"));
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);//使画笔更加圆润
mPaint.setStrokeCap(Paint.Cap.ROUND);//同上
//路径
mPath = new Path();
//保存签名的画布
post(new Runnable() {//拿到控件的宽和高
@Override
public void run() {
mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
});
}
/