編輯:初級開發
自定義VIEw的常用方法:
onFinishInflate() 當VIEw中所有的子控件均被映射成XML後觸發
onMeasure(int, int) 確定所有子元素的大小
onLayout(boolean, int, int, int, int) 當VIEw分配所有的子元素的大小和位置時觸發
onSizeChanged(int, int, int, int) 當vIEw的大小發生變化時觸發
onDraw(Canvas) vIEw渲染內容的細節
onKeyDown(int, KeyEvent) 有按鍵按下後觸發
onKeyUp(int, KeyEvent) 有按鍵按下後彈起時觸發
onTrackballEvent(MotionEvent) 軌跡球事件
onTouchEvent(MotionEvent) 觸屏事件
onFocusChanged(boolean, int, Rect) 當VIEw獲取或失去焦點時觸發
onWindowFocusChanged(boolean) 當窗口包含的vIEw獲取或失去焦點時觸發
onAttachedToWindow() 當vIEw被附著到一個窗口時觸發
onDetachedFromWindow() 當vIEw離開附著的窗口時觸發,android123提示該方法和 onAttachedToWindow() 是相反的。
onWindowVisibilityChanged(int) 當窗口中包含的可見的vIEw發生變化時觸發
以上是VIEw實現的一些基本接口的回調方法,一般我們需要處理畫布的顯示時,重寫onDraw(Canvas)用的的是最多的:
@Override
protected void onDraw(Canvas canvas) {
//這裡我們直接使用canvas對象處理當前的畫布,比如說使用Paint來選擇要填充的顏色
Paint paintBackground = new Paint();
paintBackground.setColor(getResources().getColor(R.color.xxx)); //從Res中找到名為xxx的color顏色定義
canvas.drawRect(0, 0, getWidth(), getHeight(), paintBackground); //設置當前畫布的背景顏色為paintBackground中定義的顏色,以0,0作為為起點,以當前畫布的寬度和高度為重點即整塊畫布來填充。
具體的請查看android123未來講到的Canvas和Paint,在Canvas中我們可以實現畫路徑,圖形,區域,線。而Paint作為繪畫方式的對象可以設置顏色,大小,甚至字體的類型等等。
}
當然還有就是處理窗口還原狀態問題(一般用於橫豎屏切換),除了在Activity中可以調用外,開發游戲時我們盡量在VIEw中使用類似
@Override
protected Parcelable onSaveInstanceState() {
Parcelable p = super.onSaveInstanceState();
Bundle bundle = new Bundle();
bundle.putInt("x", pX);
bundle.putInt("y", pY);
bundle.putParcelable("android123_state", p);
return bundle;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
Bundle bundle = (Bundle) state;
DOSomething(bundle.getInt("x"), bundle.getInt("y")); //獲取剛才存儲的x和y信息
super.onRestoreInstanceState(bundle.getParcelable("android123_state"));
return;
}
在VIEw中如果需要強制調用繪制方法onDraw,可以使用invalidate()方法,它有很多重載版本,同時在線程中的postInvailidate()方法將在android游戲開發之旅六中的 自定義VIEw完整篇講到。
最近正在學習android的相關知識,遇到了很多問題,其中之一就是再往sdcard卡中添加文件時會出現下面類似的問題: &
16.CustomVIEw1: 此布局用了自定義的VIEw(com.example.android.apis.view.LabelVIEw) 1:&
目前,android支持處理器情況:ARM+android 最早支持,支持的最完善,主要用在手機市場,目前積極進軍上網本、智能家居等市場;X86+Android 目前已
前言關鍵字: DigitalClock date formatandroid的DigitalClock並沒有設置輸出格式的屬性或方法,但是可以通過繼承重寫來實現,見正文