Android-使用SurfaceView多线程绘制动画
使用SurfaceView中的Surface对象进行绘图,其本质就是利用SurfaceHolder的lockCanvas获取到Canvas对象进行绘制的,对于绘制动画来说,必须使用双缓冲,或者采用双线程,一个线程负责专门的预处理,比如图片数据读取,另外一个线程负责进行专绘制图形。因为SurfaceView每次绘图都会锁定Canvas,也就是说同一片区域这次没画完下次就不能画,因此要提高动画播放的效率,就得开一条线程专门画图,开另外一条线程做预处理的工作。
下在给出一个例子,讲解一下如何利用双线程提高绘图速度:
以下可以看到的动画是一张解码后的图片从最屏幕最左边快速移到右边,重新开始则清屏进行显示