SurfaceView官方文档翻译

来源:互联网 发布:无间道为什么经典 知乎 编辑:程序博客网 时间:2024/06/05 01:04

SurfaceView

 

 

类概述

提供被嵌入到视图层次结构中的专用绘画表面。你能控制这个表面的格式,并且,如果你喜欢,它的尺寸也能控制。SurfaceView负责将表面放置在正确的屏幕位置上。

 

那个表面是Z序的,所以它在拥有这个SurfaceView的窗口的背后;SurfaceView在它所在的窗口上打了一个洞,用来允许它的表面被显示出来。视图层次结构将会负责正确的混合SurfaceView的任意兄弟表面,这个SurfaceView通常将会出现在视图层次结构的顶级。这个特性能被用来放置覆盖比如按钮这样的东西在表面的顶部,不过请注意:然而它有一个性能的影响,因为一个完全的alpha-blended合成将会被执行,在每次表面被更改的时候。

 

使表面可见的透明区域是基于在视图层次结构中的布局位置。如果后布局变更属性被用来描画一个兄弟视图在SurfaceView的顶部,这个兄弟视图有可能不会被适当的合成在表面。

 

访问在SurfaceView之下的表面这个功能是通过SurfaceHolder接口提供,这个接口能通过调用getHolder()取得。

 

那个表面将会被为你创建,在SurfaceView的窗口可见时;你应该实现surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder)来发现:当窗口被显示和隐藏时,同时那个表面被创建和销毁。

 

这个类的其中一个用途是提供一个表面,第二个线程能在其上渲染屏幕。如果你正在使用这个功能,你需要指导一些线程语义学。

·所有SurfaceView和SurfaceHolder.Callback方法将会被调用,从运行SurfaceView的窗口的线程中调用(典型地应用程序的主线程)。它们因此需要正确地同步任意状态,任意状态指的是也能被描画线程触碰的状态。

·你必须确认:描画线程只能触碰有效的表面,所谓有效,即在SurfaceHolder.Callback.surfaceCreated() 和SurfaceHolder.Callback.surfaceDestroyed() 之间。

 

0 0
原创粉丝点击