<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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為手機軌跡球事件封裝類的對象,其中封裝了觸發事件的詳細信息,同樣包括事件的類型、觸發時間等,一般情況下,該對象會在用戶操控軌跡球時被創建。
       返回值:該方法的返回值與前面介紹的各個回調方法的返回值機制完全相同,因本書篇幅有限,不再贅述。
       軌跡球與手機鍵盤的區別如下所示:
         1) 某些型號的手機設計出的軌跡球會比只有手機鍵盤時更美觀,可增添用戶對手機的整體印象。
         2) 軌跡球使用更為簡單,例如在某些游戲中使用軌跡球控制會更為合理。
         3)使用軌跡球會比鍵盤更為細化,即滾動軌跡球時,后臺的表示狀態的數值會變化得更細微、更精準。
       提示:在模擬器運行狀態下,可以通過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 江天部落格 閱讀(2105) 評論(0)  編輯  收藏 所屬分類: Android

    主站蜘蛛池模板: 国产免费人成视频在线播放播| 久久国产乱子伦精品免费看| 麻豆一区二区三区蜜桃免费| 无码国产精品一区二区免费16| 午夜a级成人免费毛片| 久久精品国产亚洲AV果冻传媒| 亚洲AV无码AV日韩AV网站| 最近免费中文字幕大全高清大全1| 免费乱码中文字幕网站| 亚洲一级在线观看| 国产无遮挡色视频免费观看性色 | 亚洲人成77777在线播放网站不卡| 一级做a免费视频观看网站| 青春禁区视频在线观看直播免费| 亚洲熟妇av一区二区三区| 日本亚洲欧美色视频在线播放| 日韩高清免费在线观看| 亚洲理论在线观看| 小日子的在线观看免费| 久久久久亚洲精品天堂| 手机看片国产免费永久| 亚洲av无码成人精品区在线播放| 久久精品国产亚洲av麻豆图片| 成年女人毛片免费播放视频m| 久久夜色精品国产噜噜噜亚洲AV| 亚洲天堂免费在线| 亚洲五月六月丁香激情| 久久精品一区二区免费看| 亚洲乱码一二三四区国产| 午夜免费1000部| 亚洲成人免费在线观看| 久久国产免费观看精品3| 国产亚洲sss在线播放| A在线观看免费网站大全| 亚洲制服丝袜一区二区三区| 日韩免费高清视频| 在线人成免费视频69国产| 亚洲成a人片在线观看无码 | 亚洲最大在线视频| 亚洲不卡无码av中文字幕| 久久精品国产大片免费观看|