android大扫盲之SurfaceView SurfaceHolder你hold住了吗

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

android大扫盲之SurfaceView,SurfaceHol der你hol d住了吗
最近接触到了SurfaceView,SurfaceHol der,SurfaceHol der.CallBack,一直不求其解,现在来粗浅认识一下它们。

先看一下官方的定义:
1.SurfaceView
SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。

你可以控制这个Surface的格式和尺寸。

Surfaceview控制这个Surface的绘制位置。

surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。

surfaceview提供了一个可见区域,只有在这个可见区域内的surface部分内容才可见,可见区域外的部分不可见。

surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。

这意味者surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。

注意,如果surface上面有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。

你可以通过SurfaceHol der接口访问这个Surface.用getHol der()方法可以得到这个接口。

surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。

这样能节省资源。

如果你要查看surface被创建和销毁的时机,可以重载surfaceCreated(SurfaceHol der)和surfaceDestroyed(SurfaceHol der)。

surfaceview的核心在于提供了两个线程:UI线程和渲染线程。

这里应注意:
1> 所有SurfaceView和SurfaceHol der.Callback的方法都应该在UI线程里调用,一般来说就是应用程序主线程。

渲染线程所要访问的各种变量应该作同步处理。

2> 由于surface可能被销毁,它只在SurfaceHol der.Callback.surfaceCreated()和
SurfaceHol der.Callback.surfaceDestroyed()之间有效,所以要确保渲染线程访问的是合法有效的surface。

2.SurfaceHol der
显示一个surface的抽象接口,使你可以控制surface的大小和格式,以及在surface上编辑像素,和监视surace的改变。

这个接口通常通过SurfaceView类实现。

SurfaceHol der.Callback 用户可以实现此接口接收surface变化的消息。

当用在一个SurfaceView 中时,它只在SurfaceHol der.Callback.surfaceCreated()和SurfaceHol der.Callback.surfaceDestroyed()之间有效。

设置Callback的方法是SurfaceHol der.addCallback.
看完官方的介绍,明白了许多,surfaceView带z-ord er的,还可以在上面操作像素有木有,还有单独的渲染线程哦亲。

如果做游戏开发,当然选SurfaceView了。

来源:清源教育。

相关文档
最新文档