文章目录
- 需求背景
- 定义接口,获取down和move事件获取到的坐标信息
- 获取触摸事件MotionEvent
- 对拿到的x、y坐标进行处理
- 发送实时坐标点
- 算法实现:把虚线通过补偿算法填充为实线
- 完成
需求背景
买东西付款的时候,或者银行一些业务办理的时候,我们常常需要签名。目前大多数场景都是电子签名。
我们需要拿到当前用户签名的轨迹,然后把签名的轨迹实时的发送到另外一台机器上。从而让工作人员实时看到对方签名的实况。
那么这个业务怎么实现呢?
过来看看实现它的完整思路!
定义接口,获取down和move事件获取到的坐标信息
/*** 监听签名坐标*/
public interface ICoordinatesListener {/** * click down的坐标*/void getDownCoordinates(int x, int y);/*** touch move的坐标*/void getCoordinates(int x,int y);
}
获取触摸事件MotionEvent
获取触摸事件,这是很自然的做法,把触摸事件的拿到的坐标点传递进到我们定义的接口中来。
对应的系统方法是,下面是伪代码,可以根据你项目实际需求进行更精细的控制:
@Overridepublic boolean onTouchEvent(MotionEvent event) {if(down){getDownCoordinates(int x, int y)}if(move){getCoordinates(int x,int y);}}
需要注意的是,由于不同屏幕有不同的像素密度和尺寸,实际上获取到的x,y轴的坐标点可能会和你画板绘制时候拿到的view的宽高对不上,需要进行一定的转换。
对拿到的x、y坐标进行处理
我们实现接口的匿名内部类,作为监听器传递到画板View中去。当onTouchEvent来数据的时候,我们并可以拿到坐标信息。
可以脑海里想象一下,当我们画一条线,是不是一定有先点击,就是down的动作,然后我们手指移动,就是move的动作。
我们在代码中,先记录down的坐标点,
/*** 获取当前点击down的坐标*/public void setTouchDownCoordinate(int touchDownX,