surfacecontrol.java_简单说说JAVA层中Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系...

Surface是屏幕图像合成器管理的原始缓冲区句柄,提供Canvas进行绘图操作。SurfaceView是内嵌于视图的绘制表面,通过SurfaceHolder接口访问。SurfaceHolder.Callback用于监听Surface生命周期变化,如创建、改变、销毁。
摘要由CSDN通过智能技术生成

1、Surface

Surface

extends Object

implements

Parcelable

java.lang.Object

android.view.Surface

Class Overview

Handle onto a raw buffer that is being managed by the screen compositor.

简单翻译:

Surface是原始图像缓冲区(raw buffer)的一个句柄,而原始图像缓冲区是由屏幕图像合成器(screen compositor)管理的。

1.1、 就如在C语言编程一样,通过一个文件的句柄,就可以操作文件,获取文件的内容。 同样的,通过Surface就可以获取raw buffer其中的内容。原生缓冲区(raw buffer)存储着当前窗口的像素数据。

1.2、事实上,当得到一个Surface对象时,同时会得到一个Canvas(画布)对象。这一点可以通过查看\frameworks\base\core\java\android\view\Surface.java文件可知道Surface类定义了一个Canvas成员变量

//@\frameworks\base\core\java\android\view\Surface.java

// The mSurfaceControl will only be present for Surfaces used by the window

// server or system processes. When this class is parceled we defer to the

// mSurfaceControl to do the parceling. Otherwise we parcel the

// mNativeSurface.

private int mSurfaceControl;

private int mSaveCount;

private Canvas mCanvas;

private int mNativeSurface;

private int mSurfaceGenerationId;

private String mName;

1.3、 理解Canvas对象,可以把它当做画布,Canvas的方法大多数是设置画布的大小、形状、画布背景颜色等等,要想在画布上面画画,一般要与Paint对象结合使用,顾名思义,Paint就是画笔的风格,颜料的色彩之类的。

// 创建画笔

Paint paint = new Paint();

paint.setColor(Color.RED);// 设置红色

canvas.drawCircle(60, 20, 10, paint);// 画一个圆

1.4、Surface本身的作用类似一个句柄,得到了这个句柄就可以得到其中的Canvas、原生缓冲器以及其它方面的内容。

1.5、Surface实现了Parcelable接口,(implements

Parcelable),也就是说Surface对象可以把显示内容的数据写入到 Parcel 中,并且能够从Parcel读回数据。

Parcelable

android.os.Parcelable

Known

Indirect Subclasses

AbsSavedState,AbsoluteSizeSpan,AccessibilityEvent,

Accessi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值