【学习笔记】关于Android的Surface系统
2011-03-09 16:27
471 查看
JAVA层次的Surface系统
1.
过程描述
android.view.Surfaceview类继承自android.view.View类,在view层次关系上提供精细绘制Surface的方法,可以通过它来改变Surface的格式、大小等。
android.view.SurfaceHolder为SurfaceView提供的一个接口类。方便实现对Surface的控制。
android.view.Surface raw buffer的句柄,被screen compositor管理。
当SurfaceView窗口可见的时候,会创建一个Surface对象。此时继承自SurfaceView的子类(继承了一个父类:SurfaceView实现一个接口:SurfaceHolder.Callback)需要重载android.view.SurfaceHolder.Callback(接口)提供的虚函数surfaceCreated(SurfaceHolder)。同样销毁的时候需要实现surfaceDestroyed(SurfaceHolder)虚函数。
整个过程如下:
(1)子类(继承自SurfaceView和SurfaceHolder.Callback)获取SurfaceHolder(也是一个接口,SurfaceView以内部类的形式对其进行了实现)
(2)将this指针添加到SurfaceHolder回调(SurfaceHolder.addCallback())中。
(3)父类SurfaceView负责UpdateWindow并调用相应的回调函数(子类中的SurfaceHolder.Callback中的相应的接口实现)
(4)子类中通过对虚函数重载,实现将内容画到Surface上。
2.Java Surface与Activity之间的关系
通过Activity提供的setContentView等方法将SurfaceView添加到主界面中。android.view.Surface是SurfaceView的一个成员变量
3.
Surface是什么
从android.view.Surface中追踪:
public Surface(SurfaceSession s, int pid, int display, int w, int h, int format, int flags)
throws OutOfResourcesException {
mCanvas = new CompatibleCanvas();
init(s,pid,display,w,h,format,flags);
}
public Surface() { mCanvas = new CompatibleCanvas(); }
从Surface的构造函数中可以看出,在其中主要是new了一个Canvas,也就是一个画布,由此我们不难猜测,这块画布对应于Surface的创建过程。所以Surface的本质就是一块内存区。注意CompatibleCanvas是Surface的一个内部类。
在调用Surface时,调用createSurface()函数,创建各个层之后,分别调用不同层中的getSurface()接口来得到一个ISurface类型的实例,然后在SurfaceComposerClient::createSurface()中得到Surface,并将其返回。
相关文章推荐
- android系统学习笔记一
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 【Android学习】关于Android4.4沉浸模式的进入和退出时系统栏状态栏遮盖问题
- Android Animation学习笔记 Posted on 2010-01-11 23:00 feisky 阅读(40227) 评论(12) 编辑 收藏 关于动画的实现,Android提供了A
- Android SurfaceView 学习笔记(二)
- Android开发学习笔记-关于Android的消息推送以及前后台切换
- Android安全学习笔记1-系统设计与架构
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
- 关于Android最佳性能实践——分析内存的使用情况学习笔记
- Android 学习笔记(一) 系统构架
- Android GPS学习笔记—系统架构
- android系统学习笔记二
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
- Android常用系统服务 学习笔记
- 一些关于Python的基础知识 - 千月的python linux 系统管理指南学习笔记(3)
- android studio 系统学习笔记(一)android studio界面介绍
- [Android游戏开发学习笔记]View和SurfaceView
- [学习笔记]Android日志系统
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
- Android系统开发学习笔记