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

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

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

    Blogger Scott

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

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

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

    3. onTouchEvent:

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

     聲明:public boolean onTouchEvent (MotionEvent event)

     參數(shù)說明: 

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

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

     詳細說明:

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

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

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

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


    轉(zhuǎn)自http://blog.csdn.net/liranke

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

    主站蜘蛛池模板: 亚洲国产免费综合| 亚洲精品中文字幕麻豆| 曰批免费视频播放免费| 亚洲婷婷综合色高清在线| 亚洲免费二区三区| 亚洲精品视频在线观看视频| 久久久久久国产精品免费无码| 久久精品国产亚洲av麻豆小说| 97在线视频免费播放| 亚洲成a人片在线观看播放| 成人免费视频69| 亚洲色大成网站www| 免费jjzz在线播放国产| 久青草国产免费观看| 国产亚洲综合一区柠檬导航| 91福利免费体验区观看区| 亚洲免费视频播放| 精品久久洲久久久久护士免费 | 国产情侣激情在线视频免费看| 亚洲日本国产精华液| 成人毛片免费观看视频| 国产成人 亚洲欧洲| 国产日产亚洲系列最新| 午夜免费福利片观看| 亚洲国产成人va在线观看网址| 免费黄网在线观看| 一级做a爱过程免费视频高清| 亚洲AV无码成人精品区蜜桃 | 最新免费jlzzjlzz在线播放| 亚洲欧洲免费无码| 亚洲一区二区精品视频| 小日子的在线观看免费| 亚洲色大网站WWW永久网站| 国产成人精品久久亚洲| 91青青青国产在观免费影视| 亚洲人成自拍网站在线观看| 亚洲欧洲日产国码av系列天堂| 日本人的色道免费网站| gogo免费在线观看| 精品久久久久久亚洲精品| 亚洲一级特黄大片无码毛片|