自定義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的對象並設置相關的參數
創建一個線程,在線程中進行繪製

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章