欢迎来到天天文库
浏览记录
ID:37537500
大小:513.92 KB
页数:58页
时间:2019-05-24
《android系统原理与开发要点详解韩超06_android的gui系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android的GUI系统Android的GUI系统第一部分AndroidGUI系统综述第二部分pixelflinger和libui库第三部分Surface系统第五部分Skia系统第六部分OpenGL系统架构第一部分AndroidGUI系统综述各种GUI元素GLSurfaceViewjavax.microedition.khronos.openglesandroid.view.Viewcom.google.android.gles_jniandroid.view.Surfaceandroid.graphics.
2、CanvasJAVA框架C框架层SurfaceJNIGraphicJNIOpenGLJNISurfaceFlingerSkia图形引擎OpenGL3D引擎libuiOverlayCameraSurfaceKey/EventformatEglWindowslibpixelflingerFrameBufferEvent输入驱动驱动第一部分AndroidGUI系统综述Android的GUI系统由C语言的框架和JAVA语言的框架组成。GUI系统的C语言部分包括:PixelFlingerlibui(框架库)SurfaceFl
3、inger(Surface的管理)Skia图形图像引擎OpenGL3D引擎各种JNI(向JAVA提供接口)第一部分AndroidGUI系统综述GUI系统JAVA语言的核心包括:android.graphics(对应Skia底层库)android.view.Surface(构建显示介面)android.view.View及其继承者(用于构建UI元素)OpenGL的功能类javax.microedition.khronos.opengles(由com.google.android.gles_jni实现)第二部分
4、pixelflinger和libui库2.1pixelflinger2.2libui2.1pixelflingerlibpixelflingner.so是一个下层的工具性的类,这个类对外的主要内容是GGLContext结构,以及初始化和卸载的函数。system/core/include/pixelflinger/system/core/libpixelflinger/ssize_tgglInit(GGLContext**context);ssize_tgglUninit(GGLContext*context);libpi
5、xelflingner.so这个库对其他的库没有依赖,也并不提供实际的功能,类似一个用于管理工具的库。2.2libuilibui是一个框架性质的集成库,它不仅是显示的中枢,也是整个GUI系统的中枢。UIlib(libui→libpixelflinger),这个的相关内容在以下的路径中:frameworks/base/include/ui/framework/base/libs/ui/libui包含了颜色格式,用于实际显示的Egl窗口,按键及事件处理,Suface界面,Overlay,Camera等几个方面的接口。2.2l
6、ibuiformat部分:这个部分本身定义颜色空间的枚举和数据结构,它需要充用pixelflinger中的一些关于数据格式定义。EglWindows部分:包含了EGL头文件构建的egl_native_window_t,它依赖OpenGL的结构,并给libEGL使用的。EGLDisplaySurface操作了硬件的framebuffer的驱动。这也是整个系统显示的基础。Key/Event部分:这是Android系统输入的基础,其中定义按键的映射,通过操作event事件设备来实现获取系统的输入的。2.2libuiSurfac
7、e:Surface相关的头文件和实现为SurfaceFlinger定义接口和框架。Overlay:定义视频输出的接口。Camera:定义摄像头的框架和接口。2.3Android的显示输出系统Android使用标准的framebuffer作为驱动程序,Android的本地框架中提供了系统和framebuffer驱动程序之间的适配层(硬件抽象层)。输出部分的硬件抽象(donut之前):EGLDisplaySurface.cpp调用标准的FrameBuffer驱动。2.3Android的显示输出系统GrallocModule是
8、Eclair版本之后显示部分的抽象层,它是系统和Framebuffer设备的接口,以硬件模块的形式存在。头文件路径:hardware/libhardware/include/hardware/gralloc.hGralloc模块实现:hardware/libhardware/modules/gralloc/Grall
此文档下载收益归作者所有