SurfaceView必知

    SurfaceView提供了一个嵌入到视图层次结构内部的绘图表面,你可以控制这个表面的格式和它的大小。SurfaceView把这个表面放在屏幕的正确位置。

这个表面在Z轴上是按照顺序放置的,位于持有它的窗口的下面。SurfaceView在它的窗口上打了一个洞,来显示绘图平面。View层次结构会正确的处理SurfaceView与位于它上面显示的兄弟节点的合成。这可以用于在绘图表面放置覆盖物,例如按钮,但是需要注意一点,由于每次绘图表面的改变,要重新进行alpha混合运算,这样会影响显示效果。

通过SurfaceHolder接口访问底层的绘图平面,可以通过SurfaceView实例的getHolder()方法获得。

当SurfaceView的窗口可见时,绘图表面将被创建。你应该实现surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder)方法,这些方法会在绘图表面被创建和销毁时被调用。

这个类的目的之一是提供一个绘图表面,在它上面,第二个线程可以进行渲染。如果你采用这种方式进行渲染,你需要注意一些线程相关的问题:

1. 所有的SurfaceView和SurfaceHolder.Callback方法会被来自于运行SurfaceView的窗口的线程调用(通常都是应用的主线程),所以要正确的同步与绘制线程触及的任何状态;

2. 必须确保绘制线程只在绘图表面可用的前提下在它上面进行操作(在SurfaceHolder.CallBack.surfaceCreated()和SurfaceHolder.CallBack.surfaceDestroyed()之间)。

你可能感兴趣的:(android,SurfaceView)