android Surface和SurfaceView概述

android.view.Surface概述

 

翻譯至android.view.Surface

 

        surface專門用來處理屏幕排版器(screen compositor)管理的一塊原始內存(raw buffer),這塊內存是用來直接繪製到屏幕的。

 

 

android.view.SurfaceView概述

 

翻譯至android.view.SurfaceView

 

        SurfaceView是視圖(View)的繼承類,這個視圖裏內嵌了一個專門用於繪製的Surface。你可以控制這個Surface的格式和尺寸。Surfaceview控制這個Surface的繪製位置。
        surface是縱深排序(Z-ordered)的,這表明它總在自己所在窗口的後面。surfaceview提供了一個可見區域,只有在這個可見區域內的surface部分內容纔可見,可見區域外的部分不可見。surface的排版顯示受到視圖層級關係的影響,它的兄弟視圖結點會在頂端顯示。這意味者surface的內容會被它的兄弟視圖遮擋,這一特性可以用來放置遮蓋物(overlays)(例如,文本和按鈕等控件)。注意,如果surface上面有透明控件,那麼它的每次變化都會引起框架重新計算它和頂層控件的透明效果,這會影響性能。
        你可以通過SurfaceHolder接口訪問這個surface,getHolder()方法可以得到這個接口。
        surfaceview變得可見時,surface被創建;surfaceview隱藏前,surface被銷燬。這樣能節省資源。如果你要查看surface被創建和銷燬的時機,可以重載surfaceCreated(SurfaceHolder)和surfaceDestroyed(SurfaceHolder)。
        surfaceview的核心在於提供了兩個線程:UI線程和渲染線程。這裏應注意:
        1> 所有SurfaceView和SurfaceHolder.Callback的方法都應該在UI線程裏調用,一般來說就是應用程序主線程。渲染線程所要訪問的各種變量應該作同步處理。
        2> 由於surface可能被銷燬,它只在SurfaceHolder.Callback.surfaceCreated()和SurfaceHolder.Callback.surfaceDestroyed()之間有效,所以要確保渲染線程訪問的是合法有效的surface。

發佈了26 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章