声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!
一、问题(需求)?
我们的应用程序当中需要在手机屏幕上面渲染和绘制非常复杂的动画和需求这样的场景,这个时候我们一般情况下,采用后台线程来完成。
二、解决方案?
1、两种方案:
第一种:SurfaceView+HandlerThread,Android1.0系统就有了
第二种:TextureView+HandlerThread,Android4.0系统才有的。如果你们的sdk小于4.0,那么这个TextureView你是看不到的。
2、简要区别:
SurfaceView原理:分为两层(上层是一个空的View,下层才是我们实际看到的View,它是一个SurfaceHolder,它有一个缓冲,所以SurfaceView有被称之为双缓冲View即二级缓存的View),而我们普通的View只有一层。
TextureView原理:其实实现的功能和SurfaceView一样,但是TextureView和普通的View相同(一层)
三、实现分析?
第一种:SurfaceView+HandlerThread,Android1.0系统就有了
一般的高级组件它都是有生命周期的,让我们的开发者或使用者用起来更方便。如果当你自己去自定义高级组件的时候,我建议提供一个生命周期,让别人去监听。如创建、显示、销毁、屏幕焦点发生改变的时候。
1、自定义一个SurfaceView
2、监听SurfaceView的生命周期
3、自定义线程,继承HandlerThread
4、定义线程处理,相关的参数
5、监听线程的生命周期
6、通过SurfaceView的生命周期来执行我们的线程,绘制我们的图片
7、添加触摸事件,创建DrawingItem对象