歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android事件監聽器(Event Listener)

Android事件監聽器(Event Listener)

日期:2017/3/1 10:22:07   编辑:Linux編程

在Android中,我們可以通過事件處理使UI與用戶互動(UI Events)。

UI的用戶事件處理,即View處理用戶的操作,在應用程序中幾乎不可避免。View是重要的類,它是與用戶互動的前線;在Android框架的設計中,以事件監聽器(event listener)的方式來處理UI的用戶事件。

Android框架提供了非常良好的UI事件處理機制。View是繪制UI的類,每個View對象都可以向Android框架注冊一個事件監聽器。每個事件監聽器都包含一個回調函數(callback method),這個回調函數(callback method)主要的工作就是回應或處理用戶的操作。

Event Listener: Click Listener例子

以「用戶觸碰(touch)」的動作來說,當View要處理用戶觸碰的事件時,就要向Android框架注冊View.OnClickListener事件監聽器;當「touch」事件發生時,Android框架便回調事件監聽器裡的回調函數。

View.OnClickListener是click listener,顧名思義,這是UI的「Click動作監聽器」;當用戶對View進行Click操作時(即觸控上的UI組件),Android框架便會回調這個View.OnClickListener的回調函數。

View.OnClickListerner的回調函數為onClick()。

這裡所提到的監聽器泛指event listener,主要用來「監聽」用戶的各種動作。除了View.OnClickListener外,Android框架還有以下的event listener(及其callback method):

  • View.OnLongClickListener: onLongClick()
  • View.OnFocusChangeListener: onFocusChange()
  • View.OnKeyListener: onKey()
  • View.OnTouchListener: onTouch()
  • View.OnCreateContextMenuListener: onCreateContextMenu()

另外一種UI事件的機制為事件處理器(event handler),event handler與event listener是不一樣的處理機制。這個留著以後再研究。

以Android所提供的View.OnClickListener來說明程序實現方法。一個較為良好的實現方法是在Acitivty類裡實現View.OnClickListener界面,即:

  1. public class YypClickListenerActivity extends Activity implements View.OnClickListener{
  2. ...
  3. }
上面的代碼用到了面向對象的接口技術,每一個View都可以注冊一個event listener,當Android框架收到「click」事件後,便回調event listener的callback method。以Button類為例,當我們想要處理用戶觸控按鈕事件時,就要調用Button類的setOnClickListener()方法來注冊click listener。上述的實現方法是,直接在的Activity類YypClickListenerActivity裡實現View.OnClickListener,因此上述Button類的click listener為「this」。如下圖:

注冊click listener的程序代碼如下:
  1. Button button = (Button)findViewById(R.id.btn);
  2. button.setOnClickListener(this);
在onCreate()裡先找到Button組件,它的click listener為this,接著在的Activity類裡實現onClick()。onClick()方法的代碼如下,我們以Toast類來回應信息給用戶:
  1. public void onClick(View v){
  2. Toast.makeText(this,"http://www.linuxidc.com",Toast.LENGTH_LONG).show();
  3. }
完整的代碼很簡單:
  1. package com.android;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.Toast;
  7. public class YypClickListenerActivity extends Activity implements View.OnClickListener{
  8. /** Called when the activity is first created. */
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. Button button = (Button)findViewById(R.id.btn);
  14. button.setOnClickListener(this);
  15. }
  16. public void onClick(View v){
  17. Toast.makeText(this,"http://www.linuxidc.com",Toast.LENGTH_LONG).show();
  18. }
  19. }

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved