一款简易画图板开发
转载请表明出处:http://blog.youkuaiyun.com/u012637501(嵌入式_小J的天空)
一、画图板原理
1.直线效果
画图板表面上看起来可以随用户在触摸屏上自由的绘制任意图形,但是实际上当用户在触摸屏上移动时,两次拖动事件发生点的距离很小,多条极短的直线连接起来我们肉眼看起来就是直接了。在触摸屏绘制图形时,每条直线都是从上一次拖动事件发生点画到本次拖动事件的发生点,可以借助于Android提供的Path类来实现。然后,如果程序每次都是从上次拖动事件的发生点绘一条直线到本次拖动事件的发生点,那么用户前面绘制的图形就会丢失。所以,为了保留用户之前绘制的内容,我们引用"双缓冲技术"来处理。
2.双缓冲技术
所谓双缓冲技术,即当程序需要在指定View上进行绘制时,程序并不直接绘制到该View组件上,而是先绘制到一个内存中的Bitmap图片(即为缓冲)上,等到内存中的Bitmap绘制好之后,再一次性地将Bitmap绘制到View组件上。
二、开发思路
为了实现触摸屏画图效果,我们还需要为触摸屏的拖动事件提供响应,即当接触触摸屏时先记录下上一次拖动事件发生的位置并将其作为此次拖动动作的起点;然后,在拖动事件中再次获取接触点的坐标(x,y)并将其作为曲线末端点坐标;最后,当手指离开屏幕时又会产生一个事件调用Canvas的drawPath方法绘制path路径图形并保存到缓冲Bitmap中。双缓冲技术实现: