最近在做一个项目,原来在手机运行非常流畅的代码移植到平板电脑中,运行就感觉明显很卡, 原因是平板电脑的分辨率是手机的两倍,而CPU还远达不到手机的两倍。原来采用ViewGroup的形式,就不得采用绘制到Bitmap的做法, 绘制到Bitmap这种做法,已经成Android绘制各种特效的常规做法了。 但是绘制到Bitmap,相对ViewGroup有很多不足的地方: 1. 不灵活, 不像ViewGroup的形式,可以采用XML布局的形式。ViewGroup做法的移植性相对来说更好些。 2.. 按键响应控制, 每个View都有自己的事件响应方法,而采用Bitamp绘制,不得不根据区域来判断响应事件。但是基于效率考虑,不得不采用在SurfaceView中用绘制Bitmap的方法,来达到无限制数量的左右滑动容器(类似gallery)的效果。 其实,目前android很多的应用都是采用这种方式来做的,比如所有流行的电子书阅读界面。
SurfaceView绘制效率高,就是Android 提供一个让我们直接可以绘制的Buffer。
控制SurfaceView的生命周期有三个函数 surfaceCreate,sufaceChange, surfaceDestroy. surfaceChange一般用于处理横竖屏幕切换。
我的做法是:
1. 创建一个绘制线程,
ThreaddrawThread = new Thread {
public void run () {
do {
// Canvas 绘制
// wait() 线程等待 .