SurfaceView

       SurfaceView是一种View,但是与普通的View不同,它拥有独立的绘图表面。

       拥有独立的绘图表面:它不与其宿主窗口共享同一个绘图表面。

       也就是说,它有两块画布,一块负责绘制,一块负责显示。

       因此SurfaceView的UI就可以在一个独立的线程中进行绘制。因为不占用主线程的UI资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面不会导致用户操作得不到响应。

       SurfaceView多用于视频展示,游戏界面渲染等。

      当然也可以用SurfaceView写一些小游戏,别踩白块,2048等。

A. 具有独立的绘图表面

B. 需要在宿主窗口上挖一个洞来显示自己

C. 绘制与显示不在同一个线程


SurfaceView相关的核心类

(1)SurfaceHolder

(2)SurfaceHolder.Callback 

(里边实现的方法有:

surfaceCreated  在surfaceView被创建后回调

surfaceChanged  在surfaceView被改变后回调

surfaceDestroyed 在surfaceView销毁后回调

)


过程:

(1)SurfaceView.getHolder()方法获取SurfaceHolder对象

(2)surfaceHolder.addCallback(callback)添加回调方法

(3)实现SurfaceHolder.Callback接口,重写其中的三个方法

(4)SurfaceHolder.lockCanvas()可以获得canvas,并且锁住显示的画布

(5)对Canvas进行绘制

(6)SurfaceHolder.unlockCanvasAndPost(canvas)结束画布的锁定,并且提交改变,将会导致图形显示发生变化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容