SurfaceView

作者: 小瓜子儿姑娘 | 来源:发表于2016-12-23 17:06 被阅读76次

       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)结束画布的锁定,并且提交改变,将会导致图形显示发生变化。

相关文章

网友评论

    本文标题:SurfaceView

    本文链接:https://www.haomeiwen.com/subject/uwikvttx.html