事件就是用戶對圖形的操做,在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()方法執行具體的事件處理操做。