绘制界面卡顿一直是安卓开发者的痛,今天来看看surfaceview,号称子线程绘图,双缓冲机制,不卡顿。
SurfaceView有以下特点:
1 具有独立的绘图表面;
2. 需要在宿主窗口上挖一个洞来显示自己;
3. 它的UI绘制可以在独立的线程中进行,这样就可以进行复杂的UI绘制,
4. 同时不会影响应用程序的主线程,响应用户输入,即不卡顿。
因为View是在UI主线程中进行绘制的,绘制时会阻塞主线程,如果ontouch事件又处理的比较多的话会导致界面卡。
而surfaceView是另开了一个线程绘制的,再加上双缓冲机制,所以要高效。不会卡。
surfaceView的两个接口:
1,SurfaceHolder.CallBack
2,Runnable
第一个接口中需要实现的方法分别对应于SurfaceView的生命周期,即创建、改变和销毁。具体代码如下:
//Surface的生命周期
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
在这里插入代码片而第二接口需要实现run方法,用于在子线程中进行draw操作。
注意,surfaceV