成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android游戲開發之三:View類用法詳解

移動開發 Android 游戲開發
在上一節View類與SurfaceView類中,講解了View類和SurfaceView類的區別。本節將詳解View類的用法,從View類開始著重的介紹Android圖形顯示基類的相關方法和注意點。

View類常用方法

自定義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實現的一些基本接口的回調方法。

View類方法的重載

 一般我們需要處理畫布的顯示時,重寫onDraw(Canvas)用的的是最多的:

  1.      @Override   
  2.       protected void onDraw(Canvas canvas) {    
  3.        //這里我們直接使用canvas對象處理當前的畫布,比如說使用Paint來選擇要填充的顏色    
  4.  
  5.       Paint paintBackground = new Paint();    
  6. paintBackground.setColor(getResources().getColor(R.color.xxx));  //從Res中找到名為xxx的color顏色定義    
  7.       canvas.drawRect(00, getWidth(), getHeight(), paintBackground); //設置當前畫布的背景顏色為paintBackground中定義的顏色,以0,0作為為起點,以當前畫布的寬度和高度為重點即整塊畫布來填充。  具體的后面會講,在Canvas中我們可以實現畫路徑,圖形,區域,線。而Paint作為繪畫方式的對象可以設置顏色,大小,甚至字體的類型等等。    
  8.     }   

當然還有就是處理窗口還原狀態問題(一般用于橫豎屏切換),除了在Activity中可以調用外,開發游戲時我們盡量在View中使用如下代碼:

  1. @Override   
  2.    protected Parcelable onSaveInstanceState() {     
  3.       Parcelable p = super.onSaveInstanceState();    
  4.       Bundle bundle = new Bundle();    
  5.       bundle.putInt("x", pX);    
  6.       bundle.putInt("y", pY);    
  7.       bundle.putParcelable("android_state", p);    
  8.       return bundle;    
  9.    }    
  10.    @Override   
  11.    protected void onRestoreInstanceState(Parcelable state) {     
  12.       Bundle bundle = (Bundle) state;    
  13.       dosomething(bundle.getInt("x"), bundle.getInt("y")); //獲取剛才存儲的x和y信息    
  14. r.onRestoreInstanceState(bundle.getParcelable("android_state"));    
  15.       return;    
  16.    }   

在View中如果需要強制調用繪制方法onDraw,可以使用invalidate()方法,它有很多重載版本,同時在線程中的postInvailidate()方法在后面的教程中會講到。

責任編輯:閆佳明 來源: jizhuomi
相關推薦

2013-05-20 17:04:09

2013-05-20 17:33:44

Android游戲開發自定義View

2012-05-15 13:44:00

HTML5中國

2011-11-03 11:42:42

虛擬化vmwareVMware View

2010-07-27 14:58:02

Flex ArrayC

2013-05-20 17:21:34

2013-05-21 11:20:37

Android游戲開發View手勢識別

2013-05-21 09:56:15

2012-09-20 09:54:12

ASP.NETWebC

2013-05-20 17:51:47

Android游戲開發SurfaceView

2013-05-21 14:10:11

Android游戲開發SoundPool類同時多音效

2010-07-19 10:24:44

AndroidiPhone

2012-09-17 09:32:16

JavaScriptJSHTML5

2011-08-02 11:17:13

iOS開發 View

2011-08-15 11:37:20

iPhone開發Mask

2013-05-20 17:48:20

2013-05-21 16:17:13

2013-05-21 15:28:31

2011-09-09 20:14:58

Android Wid

2010-07-13 09:02:19

Widget開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人av一区二区 | 成人a视频片观看免费 | 日韩成人影院 | 午夜免费网站 | 国产在线精品免费 | 亚洲天堂中文字幕 | 麻豆av一区二区三区久久 | 狠狠色狠狠色综合系列 | 欧美成人激情 | 国产欧美精品一区二区 | 精品国产aⅴ | 精品一区二区三区免费视频 | 精品视频一区二区三区在线观看 | 在线一区二区三区 | 国产精品久久久久久久久久久久久 | 久久精品播放 | 久久精品成人 | 亚洲成人三区 | 完全免费在线视频 | 99精品视频免费观看 | 一级黄在线观看 | 国产在线第一页 | 91在线电影 | 一区二区在线 | 在线一区| 欧美天堂 | 成年女人免费v片 | 久久国产精品网 | 中文字幕的av| 久草网站 | 久久久久亚洲精品 | 蜜桃黄网| 久久91| 日韩欧美在线视频一区 | 综合久久综合久久 | 黄色欧美大片 | 中文字幕 亚洲一区 | 少妇一级淫片免费放播放 | 天堂网中文字幕在线观看 | 亚洲天堂中文字幕 | 国产亚洲一区二区三区 |