android事件監聽回調機制

來源:互聯網
上載者:User

   Android事件接聽程式是視圖View類的介面,包含一個單獨的回調方法。這些方法將在視圖中註冊的接聽程式被使用者介面操作觸發時由Android架構調用。回調方法被包含在Android事件接聽程式介面中:

   例如,Android 的view 對象都含有一個命名為 OnClickListener 介面成員變數,使用者的點擊操作都會交給 OnClickListener的 OnClick() 方法進行處理。

開發人員若需要對點擊事件做處理,可以定義一個 OnClickListener 介面對象,賦給需要被點擊的 view的介面成員變數OnClickListener,一般是用 view 的setOnClickListener() 函數來完成這一操作。當有使用者點擊事件時,系統就會回調被點擊view的OnClickListener介面成員的OnClick()方法。

執行個體(對於Android介面上Button點擊事件監聽的類比):

1.定義介面public interface OnClickListener {       public void OnClick(Button b); }2. 定義Buttonpublic class Button {  OnClickListener listener;   public void click() {    listener.OnClick(this);  }  public void setOnClickListener(OnClickListener listener) {    this.listener = listener;  }}3. 將介面對象OnClickListener 賦給 Button的介面成員public class Activity {  public Activity() {  }  public static void main(String[] args) {    Button button = new Button();    button.setOnClickListener(new OnClickListener(){       @Override       public void OnClick(Button b) {                 System.out.println("clicked");       }       });    button.click(); //user click,System call button.click();  }}

下面是一些常用的Android事件監聽器介面中常用的回調方法

onClick()

  包含於View.OnClickListener。當使用者觸摸這個item(在觸摸模式下),或者通過瀏覽鍵或跟蹤球聚焦在這個item上,然後按下“確認”鍵或者按下跟蹤球時被調用。

onLongClick()

  包含於View.OnLongClickListener。當使用者觸摸並控制住這個item(在觸摸模式下),或者通過瀏覽鍵或跟蹤球聚焦在這個item上,然後保持按下“確認”鍵或者按下跟蹤球(一秒鐘)時被調用。

onFocusChange()

  包含於View.OnFocusChangeListener。當使用者使用瀏覽鍵或跟蹤球瀏覽進入或離開這個item時被調用。

onKey()

  包含於View.OnKeyListener。當使用者聚焦在這個item上並按下或釋放裝置上的一個按鍵時被調用。

onTouch()

  包含於View.OnTouchListener。當使用者執行的動作被當做一個觸摸事件時被調用,包括按下,釋放,或者螢幕上任何的移動手勢(在這個item的邊界內)。

onCreateContextMenu()

  包含於View.OnCreateContextMenuListener。當正在建立一個操作功能表的時候被調用(作為持續的“長點擊”動作的結果)。參閱建立菜單Creating Menus章節以擷取更多資訊。

注意:

這些回呼函數中onClick()回調沒有傳回值,但是一些其它回調方法必須返回一個布爾值。

onLongClick() 

  返回true 表示你已經處理了這個事件而且到此為止;返回false 表示你還沒有處理它和/或這個事件應該繼續交給其他on-click接聽程式。

onKey()

  返回true 表示你已經處理了這個事件而且到此為止;返回false 表示你還沒有處理它和/或這個事件應該繼續交給其他on-key接聽程式。

onTouch()

  返回一個布爾值來指示你的接聽程式是否已經消費了這個事件。重要的是這個事件可以有多個彼此跟隨的動作。因此,如果當接收到向下動作事件時你返回false,那表明你還沒有消費這個事件而且對後續動作也不感興趣。那麼,你將不會被該事件中的其他動作調用,比如手勢或最後出現向上動作事件。

  按鍵事件總是遞交給當前焦點所在的視圖。它們從視圖層次的頂層開始被分發,然後依次向下,直到到達恰當的目標。如果你的視圖(或者一個子視圖)當前擁有焦點,那麼你可以看到事件經由dispatchKeyEvent()方法分發。除了從你的視圖截獲按鍵事件,還有一個可選方案,你還可以在你的活動中使用onKeyDown()
and onKeyUp()來接收所有的事件。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.