Android签字面板主要是一个自定义的view,然后记录手指在view上的移动轨迹,再将轨迹保存为图片文件。
具体步骤:
- 实现一个view的子类,子类需要定义一个用作缓冲的canvas,然后定义一个bitmap(用作保存轨迹图片),将此bitmap设置到缓冲的画布上
package com.yk.skill.androidskillplatform.selfcreate.double_cache_canvas.view import android.content.Context import android.graphics.* import android.os.Environment import android.util.AttributeSet import android.util.Log import android.view.MotionEvent import android.view.View import java.io.File import java.io.FileOutputStream /** * Created by Administrator on 2018/3/15. */ class SingleCacheCanvasView : View { var path:Path = Path()//触摸产生的路径 var cacheBmp:Bitmap? = null//缓冲canvas的bitmap var cacheCanvas: Canvas? = null//缓冲canvas var cachePaint:Paint? = null//缓冲canvas画轨迹时的所使用画笔 constructor(context: Context?) : super(context){ initView(context,null,0) } constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs){ initView(context,attrs,0) } constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr){ initView(context,attrs,defStyleAttr) } /** * 初始化一些参数,比如缓冲画笔、画布canvas、bitmap */ private fun initView(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) { cachePaint = Paint() cachePaint?.strokeWidth = 10f cachePaint?.color = Color.BLUE cachePaint?.style = Paint.Style.STROKE } /** * 不是必须的,这里是设置缓冲canvas的大小(设置的bitmap位图大小就是canvas的大小) * 如果必须计算view的大小才能设置缓冲canvas的大小,建议把将缓冲canvas的bitmap放在这初始化,并将bitmap设置到缓冲c