Blogger Scott

          Android事件處理模型一(基于回調機制的事件處理)

          Android平臺的事件處理機制有兩種,一種是基于回調機制的,一種是基于監聽接口的,現介紹第一種:基于回調機制的事件處理。
          Android平臺中,每個View都有自己的處理事件的回調方法,開發人員可以通過重寫View中的這些回調方法來實現需要的響應事件。當某個事件沒有被任何一個View處理時,便會調用Activity中相應的回調方法。Android提供了以下回調方法供用戶使用:
          1. onKeyDown:
             功能:該方法是接口KeyEvent.Callback中的抽象方法,所有的View全部實現了該接口并重寫了該方法,該方法用來捕捉手機鍵盤被按下的事件。
             聲明:public boolean onKeyDown (int keyCode, KeyEvent event)
             參數說明:
            參數keyCode,該參數為被按下的鍵值即鍵盤碼,手機鍵盤中每個按鈕都會有其單獨的鍵盤碼,在應用程序都是通過鍵盤碼才知道用戶按下的是哪個鍵。
                 參數event,該參數為按鍵事件的對象,其中包含了觸發事件的詳細信息,例如事件的狀態、事件的類型、事件發生的時間等。當用戶按下按鍵時,系統會自動將事件封  裝成KeyEvent對象供應用程序使用。
                 返回值,該方法的返回值為一個boolean類型的變量,當返回true時,表示已經完整地處理了這個事件,并不希望其他的回調方法再次進行處理,而當返回false時,表示并沒有完全處理完該事件,更希望其他回調方法繼續對其進行處理,例如Activity中的回調方法。

          2. onKeyUp:
             功能:該方法同樣是接口KeyEvent.Callback中的一個抽象方法,并且所有的View同樣全部實現了該接口并重寫了該方法,onKeyUp方法用來捕捉手機鍵盤按鍵抬起的事件。
           聲明:public boolean onKeyUp (int keyCode, KeyEvent event)
           參數說明: 同onKeyDown

          3. onTouchEvent:

             功能:該方法在View類中的定義,并且所有的View子類全部重寫了該方法,應用程序可以通過該方法處理手機屏幕的觸摸事件。

           聲明:public boolean onTouchEvent (MotionEvent event)

           參數說明: 

             參數event:參數event為手機屏幕觸摸事件封裝類的對象,其中封裝了該事件的所有信息,例如觸摸的位置、觸摸的類型以及觸摸的時間等。該對象會在用戶觸摸手機屏幕時被創建。

             返回值:該方法的返回值機理與鍵盤響應事件的相同,同樣是當已經完整地處理了該事件且不希望其他回調方法再次處理時返回true,否則返回 false。

           詳細說明:

            該方法并不像之前介紹過的方法只處理一種事件,一般情況下以下三種情況的事件全部由onTouchEvent方法處理,只是三種情況中的動作值不同。

                   屏幕被按下:當屏幕被按下時,會自動調用該方法來處理事件,此時MotionEvent.getAction()的值為 MotionEvent.ACTION_DOWN,如果在應用程序中需要處理屏幕被按下的事件,只需重新該回調方法,然后在方法中進行動作的判斷即可。
                  屏幕被抬起:當觸控筆離開屏幕時觸發的事件,該事件同樣需要onTouchEvent方法來捕捉,然后在方法中進行動作判斷。當 MotionEvent.getAction()的值為MotionEvent.ACTION_UP時,表示是屏幕被抬起的事件。
                  在屏幕中拖動:該方法還負責處理觸控筆在屏幕上滑動的事件,同樣是調用MotionEvent.getAction()方法來判斷動作值是否為 MotionEvent.ACTION_MOVE再進行處理。

          4. onTrackBallEvent:
             功能: 接下來將介紹的是手機中軌跡球的處理方法onTrackBallEvent。所有的View同樣全部實現了該方法。
             聲明: public boolean onTrackballEvent (MotionEvent event)
             詳細說明:該方法的使用方法與前面介紹過的各個回調方法基本相同,可以在Activity中重寫該方法,也可以在各個View的實現類中重寫。
             參數event:參數event為手機軌跡球事件封裝類的對象,其中封裝了觸發事件的詳細信息,同樣包括事件的類型、觸發時間等,一般情況下,該對象會在用戶操控軌跡球時被創建。
             返回值:該方法的返回值與前面介紹的各個回調方法的返回值機制完全相同,因本書篇幅有限,不再贅述。
             軌跡球與手機鍵盤的區別如下所示:
              ?。保∧承┬吞柕氖謾C設計出的軌跡球會比只有手機鍵盤時更美觀,可增添用戶對手機的整體印象。
              ?。玻≤壽E球使用更為簡單,例如在某些游戲中使用軌跡球控制會更為合理。
              ?。常┦褂密壽E球會比鍵盤更為細化,即滾動軌跡球時,后臺的表示狀態的數值會變化得更細微、更精準。
             提示:在模擬器運行狀態下,可以通過F6鍵打開模擬器的軌跡球,然后便可以通過鼠標的移動來模擬軌跡球事件。

          5.  onFocusChanged:
             功能: 前面介紹的各個方法都可以在View及Activity中重寫,接下來介紹的onFocusChanged卻只能在View中重寫。該方法是焦點改變的回調方法,當某個控件重寫了該方法后,當焦點發生變化時,會自動調用該方法來處理焦點改變的事件。
             聲明:protected void onFocusChanged (boolean gainFocus, int direction, Rect previously FocusedRect)
             詳細說明:
               參數gainFocus:參數gainFocus表示觸發該事件的View是否獲得了焦點,當該控件獲得焦點時,gainFocus等于true,否則等于false。
               參數direction:參數direction表示焦點移動的方向,用數值表示,有興趣的讀者可以重寫View中的該方法打印該參數進行觀察。
               參數previouslyFocusedRect:表示在觸發事件的View的坐標系中,前一個獲得焦點的矩形區域,即表示焦點是從哪里來的。如果不可用則為null。
             提示:
                焦點:焦點描述了按鍵事件(或者是屏幕事件等)的承受者,每次按鍵事件都發生在擁有焦點的View上。在應用程序中,我們可以對焦點進行控制,例如從一個 View移動另一個View。下面列出一些與焦點有關的常用方法:
                 setFocusable方法:設置View是否可以擁有焦點。
                 isFocusable方法:監測此View是否可以擁有焦點。
                 setNextFocusDownId方法:設置View的焦點向下移動后獲得焦點View的ID。
                 hasFocus方法:返回了View的父控件是否獲得了焦點。
                 requestFocus方法:嘗試讓此View獲得焦點。
                 isFocusableTouchMode方法:設置View是否可以在觸摸模式下獲得焦點,在默認情況下是不可用獲得的。


          轉自http://blog.csdn.net/liranke

          posted on 2012-02-03 08:52 江天部落格 閱讀(2101) 評論(0)  編輯  收藏 所屬分類: Android

          主站蜘蛛池模板: 易门县| 晋城| 林州市| 安徽省| 修水县| 观塘区| 桂东县| 平罗县| 塘沽区| 江川县| 天镇县| 岱山县| 济阳县| 铜鼓县| 西充县| 出国| 太谷县| 宁武县| 杨浦区| 瓦房店市| 东乌珠穆沁旗| 仙桃市| 凤城市| 湘西| 富平县| 武威市| 河池市| 南汇区| 普兰县| 安溪县| 米林县| 芜湖市| 冕宁县| 阿拉善左旗| 郑州市| 饶平县| 邯郸市| 德保县| 大方县| 阿瓦提县| 通辽市|