SurfaceView
SurfaceView,顾名思义是带有surface(表层)的view,是View的子类,用来控制自定义绘图,绘制的View在surface之上。
我们知道View的绘制只能在UI线程里面进行,SurfaceView是一个特例,它可以在非UI线程里面绘制图形(使用canvas),绘制完成后post一个消息给UI线程,让绘制的图形显示在UI上,这样可以让UI线程来处理与用户的操作。
SurfaceView如何使用
SurfaceView是一个view,有自己的生命周期,图形的绘制是通过SurfaceHolder来控制的,SurfaceHolder持有surface对象的引用,通过回调接口来访问这个surface。
SurfaceHolder holder = getHolder();
holder.addCallback(this); //设置Surface生命周期回调
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// SurfaceView大小改变触发该方法
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// SurfaceView创建的时候调用,这里一般开启图形绘制的线程
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// SurfaceView销毁的时候调用,这里一般将绘图的线程关闭
}
值得注意的是,上面的三个回掉方法都是在主线程中执行的,开发使用的话就是这么简单。