一、Android事件處理的概述:
(一)、概念:
在Android中,我們可以通過事件處理使UI與用戶互動(dòng)(UI Events)菇篡。具體形式則是以事件監(jiān)聽器(event listener)的方式來“監(jiān)聽”用戶的動(dòng)作。
Android提供了非常良好的UI事件處理機(jī)制一喘。View是繪制UI的類驱还,每個(gè)View對(duì)象都可以向Android注冊(cè)一個(gè)事件監(jiān)聽器。每個(gè)事件監(jiān)聽器都包含一個(gè)回調(diào)方法(callback method)凸克,這個(gè)回調(diào)方法(callback method)主要的工作就是回應(yīng)或處理用戶的操作议蟆。
(二)、Android ?UI事件處理的兩套機(jī)制:
1萎战、基于監(jiān)聽和回調(diào)的事件處理機(jī)制(event listener):
就是為Android中的控件綁定特定的事件監(jiān)聽器咐容。一旦該控件監(jiān)聽到有相應(yīng)的動(dòng)作發(fā)生,則該動(dòng)作會(huì)觸發(fā)事件監(jiān)聽器蚂维,而該監(jiān)聽器會(huì)調(diào)用內(nèi)部的回調(diào)方法做出相應(yīng)的響應(yīng)戳粒。事件監(jiān)聽器的核心就是它內(nèi)部包含的回調(diào)方法。
2鸟雏、另外一種UI事件的機(jī)制為事件處理器(event handler):event handler與event listener是不一樣的處理機(jī)制享郊。后續(xù)課程中會(huì)講到多線程的Handler览祖、Looper消息傳遞機(jī)制孝鹊。
(三)、Android種常用的事件監(jiān)聽器及其回調(diào)方法(callback method):
View.OnClickListener ??: ?onClick() ? ? ? ? 單擊事件
View.OnLongClickListener ? ?: ? ??onLongClick() ? ? 長(zhǎng)按事件
View.OnFocusChangeListener ? ? : ? ? ? ? ?onFocusChange() ? ? 焦點(diǎn)改變事件
View.OnKeyListener ? ? ? ? ?: ? ? ? ? ?onKey() ? ? ?按鍵監(jiān)聽事件
View.OnTouchListener?? ? ? ? ?: ? ? ? ? ??onTouch() ? ? 觸摸屏事件
View.OnCreateContextMenuListener ? ? ? ? ?: ? ? ? ? ? onCreateContextMenu() ? ? 創(chuàng)建上下文菜單事件
【備注:】事件監(jiān)聽類:
RadioGroup.OnCheckedChangeListener ? ? ? ? ? ??單選按鈕組的勾選項(xiàng)改變監(jiān)聽器
CompoundButton.OnCheckedChangeListener ? ??多選框勾選項(xiàng)改變監(jiān)聽器
AdapterView.OnItemSelectedListener?? ? ? ? ? ? ? ? ?下拉列表框條目被選中監(jiān)聽器
AdapterView.OnItemClickListener?? ? ? ? ? ? ? ? ? ? ? ??ListView的條目單擊監(jiān)聽器
AdapterView.OnItemClickListener?? ? ? ? ? ? ? ? ? ? ? ??GridView的條目單擊監(jiān)聽器
DatePicker.OnDateChangedListener?? ? ? ? ? ? ? ? ? ? DatePicker的日期改變監(jiān)聽器
TimePicker.OnTimeChangedListener ? ? ? ? ? ? ? ? ? TimePickerkon
AbsListView.OnScrollListener ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??ListView的滑動(dòng)監(jiān)聽器
ViewPager.OnPageChangeListener
TabHost.OnTabChangeListener
SearchView.OnQueryTextListener
SeekBar.OnSeekBarChangeListener
RatingBar.OnRatingBarChangeListener
ActionBar.OnNavigationListener
ActionBar.TabListener
【備注:】其實(shí)事件監(jiān)聽器展蒂,就是實(shí)現(xiàn)了一個(gè)特定接口的Java類的實(shí)例又活。
實(shí)現(xiàn)事件監(jiān)聽器有幾種形式:
1、內(nèi)部類形式锰悼;
2柳骄、外部類形式;
3箕般、Activity實(shí)現(xiàn)監(jiān)聽器接口耐薯,自身作為事件監(jiān)聽器類;
4、匿名內(nèi)部類的形式創(chuàng)建事件監(jiān)聽器曲初,并實(shí)現(xiàn)監(jiān)聽器內(nèi)的方法体谒。(Android開發(fā)中常用匿名內(nèi)部類作為監(jiān)聽器)