編輯:關於Android編程
Android采用的SurfaceFlinger來管理整個系統的UI工作,既然是管理當然SurfaceFlinger不會去做具體的繪制工作,而只負責整個系統UI資源的協調管理,所以,SurfaceFlinger是個總承包商。干活的則是下面諸多符合OpenGL開放圖形庫規范的接口庫。
OpenGL——Open Graphic Library,開放圖形接口庫,是一套跨編程語言、跨平台的編程接口的規范,不同廠家可能有不同的實現。
SurfaceFlinger——Android中負責Surface之間疊加(merge)、混合(Composer)操作的動態庫
libagl——Android通過軟件方法實現的一套OpenGL動態庫
libhgl——Android通過硬件實現的一套OpenGL(也就是由GPU廠商提供GPU庫),隨集成GPU不同而不同。
Android中幾個Surface相關的主要目錄:
frameworks/base/opengl/——該目錄下包含相關opengl本地庫源碼,有libGLESv1_CM.so、libEGL.so、libagl.so。
frameworks/base/services/java/com/android/server/——Surface服務相關源碼放在此系統目錄下
frameworks/base/core/jni/——一些關於Surface Jni接口源碼在此目錄下。
以下則為MTK平台下的廠家配置:
alps/mediatek/platform/mt6573/kernel/drivers/video——底層顯示驅動
alps/mediatek/source/kernel/drivers/video——fb及disp顯示驅動
alps/mediatek/source/kernel/drivers/gpu——GPU硬件驅動
SurfaceFlinger啟動流程按層級分底層物理層和頂層邏輯層,當然嚴格點SurfaceFlinger其實只是指Java層面的機制。以下說法僅從調用流程從上到下方面理解劃分。
頂層流程:系統服務(System Server)->啟動BinderService->啟動SurfaceFlinger->去中間層
中間層流程:native_window->libagl(或libhgl)->去底層
底層啟動流程:LCD驅動程序(xxx.cpp)->接口驅動程序(比如dsi_xxx.cpp)->顯示驅動程序(disp_xxx.cpp)->fb管理器(比如mtk_fb.cpp)
數據流向,SurfaceFlinger接受UI動作,然後協調後經過軟件或硬件接口庫運算完成,把最終運算完成的顯示數據,統一通過fb(比如/dev/fb0)傳到底層刷新到LCD進行顯示。
android視頻播放主要是兩種方式1、系統封裝好的videoplayer,有前進、後退、暫停/播放、拉動最基本的功能,夠一般使用,操作辦法也很簡單,如果需要自定義程度高
一 摘要晚上看了關於代理模式的一篇文章,寫的非常生動,來過來分享給大家.這裡我就PHP代理模式給大家進行詳細說明.下面我們來看一看這幾天王寶強妻子出軌經紀人事件惹盡了眼球
在學習新內容之前,我們先來弄清楚兩個問題:1 . 什麼是ViewGroup?ViewGroup是一種容器。它包含零個或以上的View及子View。2 . ViewGrou
在用dialogfragment的時候我們可能會不喜歡系統自帶的黑色邊框, @drawable/my_try_use_pay_dialog