自定義ViewGroup與SurfaceView
自定義ViewGroup
所有的控制元件都是直接或者間接繼承自View,所有的佈局,都是直接或間接繼承自ViewGroup。
View是Android最基本的UI,可以在螢幕上繪製一塊矩形區域。
ViewGroup是一種特殊的view,它可以包含很多個子ViewGroup,是一個用於防控制元件和佈局的容器。
通過組合方式建立自定義控制元件
繼承線性佈局
使用layoutInflate解析自定義佈局檔案
新增監聽事件
SurfaceView
概念
SurfaceView屬於View的子類,它是專門為製作遊戲而產生的,它的功能非常強大,最重要的是它支援OpenGL ES庫,2D和3D的效果都可以實現。
SurfaceView預設使用雙緩衝技術的,它支援在子執行緒中繪製圖像,這樣就不會阻塞主執行緒了,所以它更適合於遊戲的開發。
重繪的原理是,程式根據時間來重新整理螢幕,如果有一幀圖形還沒有完全繪製結束,程式就開始重新整理螢幕,這樣就造成瞬間螢幕閃爍,畫面很不美觀,所以雙緩衝的技術就誕生了。它存在的目的就是解決螢幕閃爍的問題。
SurfaceHolder
顯示一個surface的抽象介面,使你可以控制surface的大小和格式,以及在surface上編輯畫素,和監視surface的改變。
這個介面通過SurfaceView類實現。
//給SurfaceView當前的持有者一個回撥物件。
Abstract void addCallback(SurfaceHolder.Callback callback);
//鎖定畫布,一般在鎖定後就可以通過其返回Canvas,在其上面畫圖等操作了。
Abstract Canas lockCanvas();
//結束鎖定畫圖,並提交改變。
Abstract void unlockCanvasAndPost(Canvas canvas );
SurfaceView的使用方法:
繼承SurfaceView
實現介面SurfaceHolder.Callback
獲取SurfaceHolder的物件並設定相關的引數
建立一個執行緒,線上程中進行繪製