通过自定义view实现屏幕手写签名效果,可以上一步,清空,可以保存签名为图片格式到本地。
效果:
思路其实很简单,肯定是自定义一个控件,然后在里面动态获取用户的触屏滑动的点的坐标并保存下来,一开始我想到的是保存path,但是又想过用canvas单纯的drawPoint(),或者drawlines()之类的,稍微试了下,不是很好,最终我还是选择了一开始想到的drawPath()的方案。
1.自定义控件customView继承自View,当然,为了使控件更灵活易拓展,将里面用到几个属性也设定为自定义,那么在values文件夹下创建一个attr_customview.xml的文件,在里面定义customView的属性: <resources>
<declare-styleable name="customView">
<!--画布背景色-->
<attr name="canvasColor" format="color"/>
<!--画笔颜色-->
<attr name="paintColor" format="color"/>
<!--画笔大小-->
<attr name="paintSrowkeWidth" format="integer"/>
</declare-styleable>
</resources>
2.在customView的构造方法进行一些初始化,这里除了拿到自定义的属性、以及创建画笔之外,还定义了两个集合,一个用于保存路径 path,一个用于保存路径上的点 point,为什么要用集合呢,因为签名大都不可能一笔完成吧,所以肯定有多条path需要在canvas中呈现。 public customView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//初始化
init(context,attrs);
}
/*初始化*/ private void init(Context context,AttributeSet attrs) {
//获取TypedArray,取出自定义属性
TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.customView);
//画布背景色,默认为白色
canvasColor = array.getColor(R.styleable.customView_canvasColor,Color.WHITE);
//画笔颜色,默认为黑色
paintCol