資源描述:
《android系統(tǒng)原理與開發(fā)要點詳解韓超06_android的gui系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
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.
2、CanvasJAVA框架C框架層SurfaceJNIGraphicJNIOpenGLJNISurfaceFlingerSkia圖形引擎OpenGL3D引擎libuiOverlayCameraSurfaceKey/EventformatEglWindowslibpixelflingerFrameBufferEvent輸入驅(qū)動驅(qū)動第一部分AndroidGUI系統(tǒng)綜述Android的GUI系統(tǒng)由C語言的框架和JAVA語言的框架組成。GUI系統(tǒng)的C語言部分包括:?PixelFlinger?libui(框架庫)?SurfaceFl
3、inger(Surface的管理)?Skia圖形圖像引擎?OpenGL3D引擎?各種JNI(向JAVA提供接口)第一部分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實現(xiàn))第二部分
4、pixelflinger和libui庫2.1pixelflinger2.2libui2.1pixelflingerlibpixelflingner.so是一個下層的工具性的類,這個類對外的主要內(nèi)容是GGLContext結(jié)構(gòu),以及初始化和卸載的函數(shù)。system/core/include/pixelflinger/system/core/libpixelflinger/ssize_tgglInit(GGLContext**context);ssize_tgglUninit(GGLContext*context);libpi
5、xelflingner.so這個庫對其他的庫沒有依賴,也并不提供實際的功能,類似一個用于管理工具的庫。2.2libuilibui是一個框架性質(zhì)的集成庫,它不僅是顯示的中樞,也是整個GUI系統(tǒng)的中樞。UIlib(libui→libpixelflinger),這個的相關(guān)內(nèi)容在以下的路徑中:frameworks/base/include/ui/framework/base/libs/ui/libui包含了顏色格式,用于實際顯示的Egl窗口,按鍵及事件處理,Suface界面,Overlay,Camera等幾個方面的接口。2.2l
6、ibuiformat部分:這個部分本身定義顏色空間的枚舉和數(shù)據(jù)結(jié)構(gòu),它需要充用pixelflinger中的一些關(guān)于數(shù)據(jù)格式定義。EglWindows部分:包含了EGL頭文件構(gòu)建的egl_native_window_t,它依賴OpenGL的結(jié)構(gòu),并給libEGL使用的。EGLDisplaySurface操作了硬件的framebuffer的驅(qū)動。這也是整個系統(tǒng)顯示的基礎(chǔ)。Key/Event部分:這是Android系統(tǒng)輸入的基礎(chǔ),其中定義按鍵的映射,通過操作event事件設(shè)備來實現(xiàn)獲取系統(tǒng)的輸入的。2.2libuiSurfac
7、e:Surface相關(guān)的頭文件和實現(xiàn)為SurfaceFlinger定義接口和框架。Overlay:定義視頻輸出的接口。Camera:定義攝像頭的框架和接口。2.3Android的顯示輸出系統(tǒng)Android使用標準的framebuffer作為驅(qū)動程序,Android的本地框架中提供了系統(tǒng)和framebuffer驅(qū)動程序之間的適配層(硬件抽象層)。輸出部分的硬件抽象(donut之前):EGLDisplaySurface.cpp調(diào)用標準的FrameBuffer驅(qū)動。2.3Android的顯示輸出系統(tǒng)GrallocModule是
8、Eclair版本之后顯示部分的抽象層,它是系統(tǒng)和Framebuffer設(shè)備的接口,以硬件模塊的形式存在。頭文件路徑:hardware/libhardware/include/hardware/gralloc.hGralloc模塊實現(xiàn):hardware/libhardware/modules/gralloc/Grall