資源描述:
《手機(jī)開發(fā)培訓(xùn) 06_Android的GUI系統(tǒng).pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Android的GUI系統(tǒng)Android的GUI系統(tǒng)?第一部分AndroidGUI系統(tǒng)綜述?第二部分pixelflinger和libui庫?第三部分Surface系統(tǒng)?第五部分Skia系統(tǒng)?第六部分OpenGL系統(tǒng)架構(gòu)第一部分AndroidGUI系統(tǒng)綜述各種GUI元素GLSurfaceViewjavax.microedition.khronos.openglesandroid.view.Viewcom.google.android.gles_jniandroid.view.Surfaceandroid.graphics.CanvasJAVA框架C框架層SurfaceJNIGr
2、aphicJNIOpenGLJNISurfaceFlingerSkia圖形引擎OpenGL3D引擎libuiOverlayCameraSurfaceKey/EventformatEglWindowslibpixelflingerFrameBufferEvent輸入驅(qū)動(dòng)驅(qū)動(dòng)第一部分AndroidGUI系統(tǒng)綜述Android的GUI系統(tǒng)由C語言的框架和JAVA語言的框架組成。GUI系統(tǒng)的C語言部分包括:?PixelFlinger?libui(框架庫)?SurfaceFlinger(Surface的管理)?Skia圖形圖像引擎?OpenGL3D引擎?各種JNI(向JAVA提供接口)
3、第一部分AndroidGUI系統(tǒng)綜述GUI系統(tǒng)JAVA語言的核心包括:?android.graphics(對應(yīng)Skia底層庫)?android.view.Surface(構(gòu)建顯示介面)?android.view.View及其繼承者(用于構(gòu)建UI元素)?OpenGL的功能類javax.microedition.khronos.opengles(由com.google.android.gles_jni實(shí)現(xiàn))第二部分pixelflinger和libui庫2.1pixelflinger2.2libui2.1pixelflingerlibpixelflingner.so是一個(gè)下層的工具
4、性的類,這個(gè)類對外的主要內(nèi)容是GGLContext結(jié)構(gòu),以及初始化和卸載的函數(shù)。system/core/include/pixelflinger/system/core/libpixelflinger/ssize_tgglInit(GGLContext**context);ssize_tgglUninit(GGLContext*context);libpixelflingner.so這個(gè)庫對其他的庫沒有依賴,也并不提供實(shí)際的功能,類似一個(gè)用于管理工具的庫。2.2libuilibui是一個(gè)框架性質(zhì)的集成庫,它不僅是顯示的中樞,也是整個(gè)GUI系統(tǒng)的中樞。UIlib(libui→l
5、ibpixelflinger),這個(gè)的相關(guān)內(nèi)容在以下的路徑中:frameworks/base/include/ui/framework/base/libs/ui/libui包含了顏色格式,用于實(shí)際顯示的Egl窗口,按鍵及事件處理,Suface界面,Overlay,Camera等幾個(gè)方面的接口。2.2libuiformat部分:這個(gè)部分本身定義顏色空間的枚舉和數(shù)據(jù)結(jié)構(gòu),它需要充用pixelflinger中的一些關(guān)于數(shù)據(jù)格式定義。EglWindows部分:包含了EGL頭文件構(gòu)建的egl_native_window_t,它依賴OpenGL的結(jié)構(gòu),并給libEGL使用的。EGLDis
6、playSurface操作了硬件的framebuffer的驅(qū)動(dòng)。這也是整個(gè)系統(tǒng)顯示的基礎(chǔ)。Key/Event部分:這是Android系統(tǒng)輸入的基礎(chǔ),其中定義按鍵的映射,通過操作event事件設(shè)備來實(shí)現(xiàn)獲取系統(tǒng)的輸入的。2.2libuiSurface:Surface相關(guān)的頭文件和實(shí)現(xiàn)為SurfaceFlinger定義接口和框架。Overlay:定義視頻輸出的接口。Camera:定義攝像頭的框架和接口。2.3Android的顯示輸出系統(tǒng)Android使用標(biāo)準(zhǔn)的framebuffer作為驅(qū)動(dòng)程序,Android的本地框架中提供了系統(tǒng)和framebuffer驅(qū)動(dòng)程序之間的適配層(硬件
7、抽象層)。輸出部分的硬件抽象(donut之前):EGLDisplaySurface.cpp調(diào)用標(biāo)準(zhǔn)的FrameBuffer驅(qū)動(dòng)。2.3Android的顯示輸出系統(tǒng)GrallocModule是Eclair版本之后顯示部分的抽象層,它是系統(tǒng)和Framebuffer設(shè)備的接口,以硬件模塊的形式存在。頭文件路徑:hardware/libhardware/include/hardware/gralloc.hGralloc模塊實(shí)現(xiàn):hardware/libhardware/modules/gralloc/Grall