Android 事件處理

    事件就是用戶對圖形的操做,在android手機和平板電腦上,主要包含物理按鍵事件和觸摸屏事件兩類。物理按鍵事件包含:按下、擡起、長按等;觸摸屏事件主要包含按下、擡起、滾動、雙擊等。android

    在View中提供了onTouchEvent()方法,能夠重寫該方法來處理觸摸屏事件,適用於重寫組件的場景;android中還提供了setOnTouchListener()方法爲組件設置監聽器來處理觸摸屏事件。ide

    在android中提供啦兩種方式的事件處理,一種是基於監聽的事件處理,一種是基於回調的事件處理。this

1、基於監聽的事件處理spa

   實現基於監聽的事件處理,主要作法就是爲android的UI組件綁定特定的事件監聽器,在事件監聽的處理模型中,主要有三個對象:code

   ①、Event Source(事件源):即產生事件的來源,一般是各類組件,例如:按鈕、窗口、菜單等對象

   ②、Event(事件):事件中封裝了UI組件上發生的特定事件的具體信息,若是事件須要獲取UI組件上所發生事件的相關信息,通常經過Event對象來傳遞blog

   ③、Event Listener(事件監聽器):監聽事件源所發生的事件,並對不一樣的事件作出相應的相應繼承

2、基於回調的事件處理接口

    實現基於回調的事件處理,就是重寫Android組件特定的回調方法或重寫Activity的回調方法。爲了使用回調機制來處理GUI組件(圖形用戶界面)上所發生的事件,須要爲該組件提供對應的事件處理方法,能夠經過繼承GUI組件類,並重寫該類的事件處理方法來實現。事件

    View類中包含的一些事件處理的回調方法:

     ①、Boolean onKeyDown(int keyCode,keyEvent event)  當用戶在該組件上按下某個按鍵時觸發

     ②、Boolean onKeyLongPress(int keyCode,KeyEvent event)  當用戶在該組件上長按某個按鍵時觸發

     ③、Boolean onKeyShortcut(int keyCode,KeyEvent event)  當一個鍵盤快捷鍵事件發生時觸發

     ④、Boolean onKeyUp(int keyCode,KeyEvent event)  當用戶在該組件上鬆開某個按鍵時觸發

     ⑤、Boolean onTouchEvent(MotionEvent event)  當用戶在該組件上觸發觸摸屏事件時觸發

     ⑥、boolean onTrackballEvent(MotionEvent event) 當用戶在該組件上觸發軌跡球事件時觸發

通常來講,基於回調的事件處理方式可用於處理一些通用性的事件,事件處理的代碼會比較簡潔。但對於某些特定的事件,沒法採用基於回調的事件處理方式實現時,就只能採用基於監聽的事件處理方式。

3、物理按鍵事件處理

   ①、Android設備可用物理按鍵及其觸發事件

   音量鍵  KEYCODE_VOLUME_UP / KEYCODE_VOLUME_DOWN 控制當前上下音量,如音樂播放器、手機鈴聲、通話音量

   返回鍵  KEYCODE_BACK   返回到前一個界面

   菜單鍵  KEYCODE_MENU   顯示當前應用的可用菜單

   ②、在android中處理物理按鍵事件時,經常使用的回調方法:

    onKeyUp()  當用戶鬆開某個按鍵時觸發該方法

    onKeyDown() 當用戶按下(未鬆開)某個按鍵時觸發該方法

    onkeyLongPress() 當用戶長按某個按鍵時觸發該方法

    ③、獲取系統時間:system.currentTimeMillis()

4、觸摸屏事件處理

   ①、單機事件

     在手機應用中,常常須要實如今屏幕中單機某個按鈕或組件執行一些操做,這時就須要經過單機事件來完成。在處理單機事件時,能夠經過爲組件添加單擊事件監聽器的方法來實現。android爲組件提供了setOnClickListener()方法,用於爲組件設置單擊事件監聽器。該方法的參數是一個View.OnClickListener接口的實現類對象。View.OnClickListener接口定義以下:

   

1 pubic static interface View.OnClickListener{
2     public void onClick(View v);
3 
4 }

  在實現View.OnClickListener接口時,須要重寫onClick()方法。當單擊事件觸發後,將調用onClick()方法執行具體的事件處理操做。

ag:爲button的按鈕添加一個單擊事件監聽器,而且實現單擊該按鈕時彈出消息提示顯示:單擊了按鈕,代碼以下:

   

Button button =new Button(this)
button.setOnClickListener(new View.OnClickListener(){

  @Override
  public void onClick(View v){

Toast.makeText(MainActivity.this,"單擊了按鈕",Toast.LENGTH_SHORT).show();
    }
});

   ②、長按事件

    長按事件不一樣於單擊事件,長按事件須要長按某一個組件2秒以後纔會觸發。在處理長按事件時,能夠經過爲組件添加長按事件監聽器的方法來實現。android爲組件提供了setOnLongClickListener()方法,用於爲組件設置長按事件監聽器,該方法的參數是View.OnLongClickListener接口的實現類對象,接口定義以下:

1 public static interface View.OnLongClickListener{
2 
3    public void onLongClick(View v)
4 
5 }

在實現View.OnLongClickListener接口時,須要重寫onLongClick()方法。當長按事件觸發後,將調用onLongClick()方法執行具體的事件處理操做。

相關文章
相關標籤/搜索