API 25 (Android 7.1.1 API) view.SurfaceView
来源:互联网 发布:mac 国家地理的图片 编辑:程序博客网 时间:2024/05/17 21:43
SurfaceView
public class SurfaceView
extends View
Added in API level 1
java.lang.Object
↳android.view.View
↳android.view.SurfaceView
已知直接子类:
GLSurfaceView
VideoView
【概述】
SurfaceView是View继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。
surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。surfaceview提供了一个可见区域,只有在这个可见区域内 的surface部分内容才可见,可见区域外的部分不可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味者surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。注意,如果surface上面 有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。
你可以通过SurfaceHolder接口访问这个surface,getHolder()方法可以得到这个接口。
surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。这样能节省资源。如果你要查看surface被创建和销毁的时机,可以重载surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder)。
surfaceview的核心在于提供了两个线程:UI线程和渲染线程。这里应注意:
·所有SurfaceView和SurfaceHolder.Callback的方法都应该在UI线程里调用,一般来说就是应用程序主线程。渲染线程所要访问的各种变量应该作同步处理。
·由于surface可能被销毁,它只在SurfaceHolder.Callback.surfaceCreated()和
SurfaceHolder.Callback.surfaceDestroyed()之间有效,所以要确保渲染线程访问的是合法有效的surface。
【继承自view.View的XML属性】
跳转view.View
【公共构造函数】
SurfaceView(Context context)
SurfaceView(Context context, AttributeSet attrs)
SurfaceView(Context context, AttributeSet attrs, int defStyleAttr)
SurfaceView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
【公共方法】
draw
public void draw (Canvas canvas)
API1
手动渲染此视图(及其所有子项)给定的画布。在调用此函数之前,视图必须已经完成了完整的布局。当实现一个视图时,实现onDraw(android.graphics.Canvas)而不是覆盖这个方法。如果你确实需要重写这个方法,调用超类的版本。
gatherTransparentRegion
public boolean gatherTransparentRegion (Region region)
API1
当视图层次包含一个或多个SurfaceView时,由RootView使用它来执行优化。SurfaceView总是被认为是透明的,但它的子元素不是透明的,因此所有的View对象从全局透明区域中删除(作为参数传递给这个函数)。
如果此时视图的有效可见性不透明,则返回true,而不管透明区域;如果可能在视图后面看到基础窗口,则返回false。
getHolder
public SurfaceHolder getHolder ()
API1
返回SurfaceHolder,提供对此SurfaceView底层surface的访问和控制。
setSecure
public void setSecure (boolean isSecure)
API17
控制surface view的内容是否应被视为安全,以防止其显示在屏幕截图中或在非安全显示器上查看。
注意,这必须在surface view的包含窗口附加到窗口管理器之前设置。
有关详细信息,请参阅FLAG_SECURE。
setVisibility
public void setVisibility (int visibility)
API1
设置视图的可见性。
setZOrderMediaOverlay
public void setZOrderMediaOverlay (boolean isMediaOverlay)
API5
控制surface view的surface是否放置在窗口中另一个正则surface view的顶部(但仍然在窗口本身之后)。 这通常用于将覆盖放置在底层媒体surface view的顶部。
注意,这必须在surface view的包含窗口附加到窗口管理器之前设置。
调用此方法将覆盖对setZOrderOnTop(boolean)的任何先前调用。
SetZOrderOnTop
public void setZOrderOnTop (boolean onTop)
API5
控制surface view的表面是否放置在其窗口的顶部。 通常,它放在窗口后面,以使其(大部分)看起来与层次结构中的视图合成。 通过设置此项,您可以将其放置在窗口上方。 这意味着SurfaceView的窗口的内容不会出现在它的表面之上。
注意,这必须在surface view的包含窗口附加到窗口管理器之前设置。
调用这将覆盖任何以前的调用setZOrderMediaOverlay(boolean)。
【受保护的方法】
protected void dispatchDraw (Canvas canvas)
API1
protected void onAttachedToWindow ()
API1
protected void onDetachedFromWindow ()
API1
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
API1
protected void onWindowVisibilityChanged (int visibility)
API1
- API 25 (Android 7.1.1 API) view.SurfaceView
- API 25 (Android 7.1.1 API) view.TextureView
- API 25 (Android 7.1.1 API) view.ViewStub
- API 25 (Android 7.1.1 API) view.ViewGroup——属性分析
- API 25 (Android 7.1.1 API) Manifest
- android.view.WindowManager API
- Android View api 详解
- Android View api
- Android SurfaceView(一:API简介)
- 【Android基础】(12)SurfaceView绘图API详解
- Android API之android.view.View.MeasureSpec
- 【Android API简述】android.view.View.OnClickListener
- Android API的View类
- Android API Guides---Grid View
- Android API Guides---View Animation
- API 25 (Android 7.1.1 API) widget.Space
- API 25 (Android 7.1.1 API) widget.AbsoluteLayout
- API 25 (Android 7.1.1 API) widget.RelativeLayout
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
- 09上机练习2
- 参照《第一行代码》开发CoolWeather (一)
- 计算机视觉(opencv和卷积)
- java中级面试题总结(1)
- API 25 (Android 7.1.1 API) view.SurfaceView
- 开源集锦(三)GitHub开源控件(一)
- 一个简单的取就近的五分钟的整数倍的日期
- 使用Docker部署Mesos
- 【C语言】称硬币问题
- js随时判断网络状态
- java线程通信 生产者与消费者模式
- 文章标题
- 接管php 错误 异常