下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、情景2:Activity程序開發(fā)事件3.5.1 onKeyDown方法簡介onKeyDown方法是接口KeyEvent.Callback中的抽象方法,所有的View全部實現(xiàn)了該接口并重寫了該方法,該方法用來捕捉手機鍵盤被按下的事件。方法的聲明格式如下所示:publicbooleanonKeyDown(intkeyCode,KeyEventevent)參數(shù)keyCode,為被按下的鍵值即鍵盤碼,手機鍵盤中每個按鈕都會有其單獨的鍵盤碼,在應用程序都是通過鍵盤碼才知道用戶按下的是哪個鍵。參數(shù)event,為按鍵事件的對象,其中包含了觸發(fā)事件的詳細信息,例如事件的狀態(tài)、事件的類型、事件發(fā)生的時間等。當用
2、戶按下按鍵時,系統(tǒng)會自動將事件封裝成KeyEvent對象供應用程序使用。返回值,該方法的返回值為一個boolean類型的變量,當返回true時,表示已經完整地處理了這個事件,并不希望其他的回調方法再次進行處理,而當返回false時,表示并沒有完全處理完該事件,更希望其他回調方法繼續(xù)對其進行處理,例如Activity中的回調方法。3.5.2 onKeyUp方法簡介onKeyUp方法的原理及使用方法與onKeyDown方法基本一樣,只是該方法會在按鍵抬起時被調用。如果用戶需要對按鍵抬起事件進行處理,通過重寫該方法可以實現(xiàn)。該方法同樣是接口KeyEvent.Callback中的一個抽象方法,并且所有
3、的View同樣全部實現(xiàn)了該接口并重寫了該方法,onKeyUp方法用來捕捉手機鍵盤按鍵抬起的事件,方法的聲明格式如下所示:publicbooleanonKeyUp(intkeyCode,KeyEventevent)參數(shù)keyCode:同樣為觸發(fā)事件的按鍵碼,需要注意的是,同一個按鍵在不同型號的手機中的按鍵碼可能不同。參數(shù)event:同樣為事件封裝類的對象,其含義與onKeyDown方法中的完全相同,在此不再贅述。返回值:該方法返回值表示的含義與onKeyDown方法相同,同樣通知系統(tǒng)是否希望其他回調方法再次對該事件進行處理。3.5.3onTouchEvent方法簡介onTouchEvent事件方
4、法是手機屏幕事件的處理方法。該方法在View類中的定義,并且所有的View子類全部重寫了該方法,應用程序可以通過該方法處理手機屏幕的觸摸事件。該方法的聲明格式如下所示:publicbooleanonTouchEvent(MotionEventevent)參數(shù)event:為手機屏幕觸摸事件封裝類的對象,其中封裝了該事件的所有信息,例如觸摸的位置、觸摸的類型以及觸摸的時間等。該對象會在用戶觸摸手機屏幕時被創(chuàng)建。返回值:該方法的返回值機理與鍵盤響應事件的相同,同樣是當已經完整地處理了該事件且不希望其他回調方法再次處理時返回true,否則返回false。3.5.3onTouchEvent方法簡介該方法
5、并不像之前介紹過的方法只處理一種事件,一般情況下以下三種情況的事件全部由onTouchEvent方法處理,只是三種情況中的動作值不同。屏幕被按下事件:當屏幕被按下時,會自動調用該方法來處理事件,此時MotionEvent.getAction()的值為MotionEvent.ACTION_DOWN,如果在應用程序中需要處理屏幕被按下的事件,只需重新回調該方法,然后在方法中進行動作的判斷即可。屏幕被抬起事件:當觸控筆離開屏幕時觸發(fā)的事件,該事件同樣需要onTouchEvent方法來捕捉,然后在方法中進行動作判斷。當MotionEvent.getAction()的值為MotionEvent.ACTI
6、ON_UP時,表示是屏幕被抬起的事件。在屏幕中拖動事件:該方法還負責處理觸控筆在屏幕上滑動的事件,同樣是調用MotionEvent.getAction()方法來判斷動作值是否為MotionEvent.ACTION_MOVE再進行處理。3.5.4 onTrackBallEvent方法和onFocusChanged方法簡介onTrackBallEvent是手機中軌跡球的處理方法。所有的View同樣全部實現(xiàn)了該方法。該方法的聲明格式如下:publicbooleanonTrackballEvent(MotionEventevent)參數(shù)event:為手機軌跡球事件封裝類的對象,其中封裝了觸發(fā)事件的詳細
7、信息,同樣包括事件的類型、觸發(fā)時間等,一般情況下,該對象會在用戶操控軌跡球時被創(chuàng)建。返回值:該方法的返回值與前面介紹的各個回調方法的返回值機制完全相同。3.5.4 onTrackBallEvent方法和onFocusChanged方法簡介軌跡球與手機鍵盤的區(qū)別如下所示。1、某些型號的手機設計出的軌跡球會比只有手機鍵盤時更美觀,可增添用戶對手機的整體印象。2、軌跡球使用更為簡單,例如在某些游戲中使用軌跡球控制會更為合理。3、使用軌跡球會比鍵盤更為細化,即滾動軌跡球時,后臺的表示狀態(tài)的數(shù)值會變化得更細微、更精準。該方法的使用方法與前面介紹過的各個回調方法基本相同,可以在Activity中重寫該方法
8、,也可以在各個View的實現(xiàn)類中重寫。提示:在模擬器運行狀態(tài)下,可以通過F6鍵打開模擬器的軌跡球,然后便可以通過鼠標的移動來模擬軌跡球事件。3.5.4 onTrackBallEvent方法和onFocusChanged方法簡介onFocusChanged只能在View中重寫,該方法是焦點改變的回調方法,當某個控件重寫了該方法后,當焦點發(fā)生變化時,會自動調用該方法來處理焦點改變的事件。該方法的聲明格式如下。protectedvoidonFocusChanged(booleangainFocus,intdirection,RectpreviouslyFocusedRect)參數(shù)gainFocus:
9、表示觸發(fā)該事件的View是否獲得了焦點,當該控件獲得焦點時,gainFocus等于true,否則等于false。參數(shù)direction:表示焦點移動的方向,用數(shù)值表示,有興趣的讀者可以重寫View中的該方法打印該參數(shù)進行觀察。參數(shù)previouslyFocusedRect:表示在觸發(fā)事件的View的坐標系中,前一個獲得焦點的矩形區(qū)域,即表示焦點是從哪里來的。如果不可用則為null。3.5.4 onTrackBallEvent方法和onFocusChanged方法簡介表3-22 焦點有關的常用方法表方法名稱方法說明setFocusable()設置View是否可以擁有焦點isFocusable()
10、監(jiān)測此View是否可以擁有焦點setNextFocusDownId()setNextFocusLeftId()setNextFocusRightId()setNextFocusUpId()設置View的焦點向上、下、左、右移動后獲得焦點View的IDhasFocus()返回了View的父控件是否獲得了焦點requestFocus()嘗試讓此View獲得焦點isFocusableInTouchMode()設置View是否可以在觸摸模式下獲得焦點,在默認情況下是不可用獲得的3.5.5 OnClickListener接口簡介對于一個Android應用程序來說,事件處理是必不可少的,用戶與應用程序之間
11、的交互便是通過事件處理來完成的。當用戶與應用程序交互時,一定是通過觸發(fā)某些事件來完成的,讓事件來通知程序應該執(zhí)行那些操作,在這個繁雜的過程中主要涉及兩個對象,事件源與事件監(jiān)聽器。事件源指的是事件所發(fā)生的控件,各個控件在不同情況下觸發(fā)的事件不盡相同,而且產生的事件對象也可能不同。監(jiān)聽器則是用來處理事件的對象,實現(xiàn)了特定的接口,根據事件的不同重寫不同的事件處理方法來處理事件。將事件源與事件監(jiān)聽器聯(lián)系到一起,就需要為事件源注冊監(jiān)聽,當事件發(fā)生時,系統(tǒng)才會自動通知事件監(jiān)聽器來處理相應的事件。3.5.5 OnClickListener接口簡介圖3-40 事件處理流程圖3.5.5 OnClickListe
12、ner接口簡介事件處理的過程一般分為三步,如下所示。應該為事件源對象添加監(jiān)聽,這樣當某個事件被觸發(fā)時,系統(tǒng)才會知道通知誰來處理該事件,如事件處理流程圖3-40(A)所示。當事件發(fā)生時,系統(tǒng)會將事件封裝成相應類型的事件對象,并發(fā)送給注冊到事件源的事件監(jiān)聽器,如事件處理流程圖3-40(B)所示。當監(jiān)聽器對象接收到事件對象之后,系統(tǒng)會調用監(jiān)聽器中相應的事件處理方法來處理事件并給出響應,如事件處理流程圖3-40(C)所示。OnClickListener接口,是處理的點擊事件。在觸控模式下,是在某個View上按下并抬起的組合動作,而在鍵盤模式下,是某個View獲得焦點后點擊確定鍵或者按下軌跡球事件。該接
13、口對應的回調方法簽名如下:publicvoidonClick(Viewv); 參數(shù)v便為事件發(fā)生的事件源。3.5.5 OnLongClickListener接口簡介OnLongClickListener接口,該接口與OnClickListener接口原理基本相同,只是該接口為View長按事件的捕捉接口,即當長時間按下某個View時觸發(fā)的事件,該接口對應的回調方法為:publicbooleanonLongClick(Viewv) 參數(shù)v:為事件源控件,當長時間按下此控件時才會觸發(fā)該方法。返回值:該方法的返回值為一個boolean類型的變量,當返回true時,表示已經完整地處理了這個事件,并不希望
14、其他的回調方法再次進行處理;當返回false時,表示并沒有完全處理完該事件,更希望其他方法繼續(xù)對其進行處理。 我們只需要修改Example_OnClickListene項目里面的三個地方,就可測試該接口的使用方法。其一為定義類的接口為OnLongClickListener,其二在綁定監(jiān)聽器時修改為:button.setLongOnClickListener(this);其三把實現(xiàn)監(jiān)聽方法該為:public boolean onLongClick(View v) /實現(xiàn)事件監(jiān)聽方法 textView.setText(您選擇了 + (Button)v).getText()+,歡迎你!); retu
15、rn true;3.5.6 OnFocusChangeListener接口簡介OnFocusChangeListener接口用來處理控件焦點發(fā)生改變的事件。如果注冊了該接口,當某個控件失去焦點或者獲得焦點時都會觸發(fā)該接口中的回調方法,該接口對應的回調方法聲明格式如下。 publicvoidonFocusChange(Viewv,BooleanhasFocus) 參數(shù)v: 便為觸發(fā)該事件的事件源;參數(shù)hasFocus: 表示v的新狀態(tài),即v是否是獲得焦點。3.5.7 OnKeyListener接口簡介OnKeyListener是對手機鍵盤進行監(jiān)聽的接口,通過對某個View注冊該監(jiān)聽,當View獲
16、得焦點并有鍵盤事件時,便會觸發(fā)該接口中的回調方法。該接口中的抽象方法聲明格式如下:publicbooleanonKey(Viewv,intkeyCode,KeyEventevent)參數(shù)v:為事件的事件源控件。參數(shù)keyCode:為手機鍵盤的鍵盤碼。參數(shù)event:便為鍵盤事件封裝類的對象,其中包含了事件的詳細信息,例如發(fā)生的事件、事件的類型等。3.5.8 OnTouchListener接口簡介OnTouchListener接口是用來處理手機屏幕事件的監(jiān)聽接口,當為View的范圍內觸摸按下、抬起或滑動等動作時都會觸發(fā)該事件。該接口中的監(jiān)聽方法聲明格式如下:publicbooleanonTouc
17、h(Viewv,MotionEventevent)參數(shù)v:同樣為事件源對象。參數(shù)event:為事件封裝類的對象,其中封裝了觸發(fā)事件的詳細信息,同樣包括事件的類型、觸發(fā)時間等信息。3.5.9 OnCreateContextMenuListener接口簡介OnCreateContextMenuListener接口是用來處理上下文菜單顯示事件的監(jiān)聽接口。該方法是定義和注冊上下文菜單的另一種方式。該接口中事件處理的回調方法簽名如下所示。publicvoidonCreateContextMenu(ContextMenu menu,Viewv,ContextMenuInfoinfo)參數(shù)menu:為事件的
18、上下文菜單。參數(shù)v:為事件源View,當該View獲得焦點時才可能接收該方法的事件響應。參數(shù)info:info對象中封裝了有關上下文菜單額外的信息,這些信息取決于事件源View。該方法會在某個View中顯示上下文菜單時被調用,開發(fā)人員可以通過實現(xiàn)該方法來處理上下文菜單顯示時的一些操作。3.3 菜 單Android在平臺下所提供的菜單大體上可以分為三類:選項菜單(Options Menu)、上下文菜單(Context Menu)、和子菜單(Submenu)。在用戶界面中,除了經常用到菜單之外,對話框也是程序與用戶進行交互的主要途徑之一,Android平臺下的對話框主要包括普通對話框、選項對話框、
19、單選多選對話框、日期與時間對話框、進度對話框等。3.3.1選項菜單和子菜單簡介當Activity在前臺運行時,如果用戶按下手機上的Menu鍵,此時就會在屏幕底端彈出相應的選項菜單。但這個功能是需要開發(fā)人員編程來實現(xiàn)的,如果在開發(fā)應用程序時沒有實現(xiàn)該功能,那么程序運用時按下手機上的Menu鍵是不會起作用的。對于攜帶圖標的選項菜單,每次最多只能顯示6個,當菜單選項多余6個時,將只顯示前5個和一個擴展菜單選項,點擊擴展菜單選項將會彈出其余的菜單項。擴展菜單項中將不會顯示圖標,但是可以顯示單選按鈕及復選框。在Android中通過回調方法來創(chuàng)建菜單并處理菜單按下的事件,除了開發(fā)回調方法onOptions
20、ItemSelected來處理用戶選中事件,還可以為每個菜單項MenuItem對象添加onOptionsItemClickListener監(jiān)聽器來處理菜單選中事件。開發(fā)選項菜單主要用到Menu、MenuItem及SubMenu。3.3.1選項菜單和子菜單簡介表3-17 選項菜單相關的回調方法及說明方 法 名描 述onCreateOptionsMenu(Menu menu)初始化選項菜單,該方法只在第一次顯示菜單是調用,如果每次顯示菜單時更新菜單項,則需要重寫OnPrepareOptionsMenu(Menu)public boolean onOptionsItemSelected(MenuIt
21、em item)當選項菜單中某個選項被選中時調用該方法,默認的是一個返回false的空實現(xiàn)public void onOptionsMenuClosed(Menu menu)當選項菜單關閉時(或者由于用戶按下了返回鍵或者是選擇了某個菜單選項)調用該方法public boolean OnPrepareOptionsMenu(Menu menu)為程序準備選項菜單,每次選項菜單顯示前會調用該方法??梢酝ㄟ^該方法設置某些菜單項可用或不可用或者修改菜單項的內容。重寫該方法時需要返回true,否則選項菜單將不會顯示3.3.1選項菜單和子菜單簡介一個Menu對象代表一個菜單,Menu對象中可以添加菜單項M
22、enuItem,也可以添加子菜單SubMenu.表3-18 Menu的常用方法及說明方法名稱參數(shù)說明方法說明MenuItem add(int groupId,int itemId,int order,Charsequence title);MenuItem add(int groupId,int itemId,int order,int titleRes);MenuItem add(Charsequence title);MenuItem add(int titleRes)groupId:菜單項所在的組id,通過分組可以對菜單項進行通過分組可以對菜單項進行批量操作,如果菜單項不需要屬于任何組,
23、傳入NONE;itemId:唯一標識菜單項的id,可傳入NONE;order:菜單項的順序,可傳入NONE;title:菜單項顯示的文本內容;titleRes:String對象的資源標識符向Menu添加一個菜單項,返回MenuItem對象3.3.1選項菜單和子菜單簡介方法名稱參數(shù)說明方法說明SubMenu addSubMenu(int titleRes);SubMenu addSubMenu(int groupId,int itemId,int order,int titleRes);SubMenu addSubMenu(Charsequence title);SubMenu addSubMe
24、nu(int groupId,int itemId,int order,Charsequence title)groupId:子菜單項所在的組id,通過分組可以對菜單項進行通過分組可以對菜單項進行批量操作,如果菜單項不需要屬于任何組,傳入NONE;itemId:唯一標識子菜單項的id,可傳入NONE;order:子菜單項的順序,可傳入NONE;title:子菜單項顯示的文本內容;titleRes:String對象的資源標識符向Menu添加一個子菜單項,返回SubMenu對象void clear()-移除菜單中所有的子項void close()-如果菜單正顯示,關閉菜單MenuItem find
25、Item(int id)id:MenuItem的標識符返回指定id的MenuItem對象void removeGroup(int gronpld)groupId:組id如果指定id的組不為空,從菜單中移除改組void remove Item(int id)id:MenuItem的id移除指定id的MenuItemint size()-返回Menu中菜單項的個數(shù)3.3.1選項菜單和子菜單簡介MenuItem對象代表一個菜單項,通常Menuitem實例通過Menu的add方法獲得.表3-19 選項菜單相關的回調方法及說明方法名稱參數(shù)說明方法說明setAlphabeticShortcut(char
26、alphaChar)alphaChar:字母快捷鍵設置MenuItem的字母快捷鍵MenuItem setNumericShortcut(char numericChar)numericChar:數(shù)字快捷鍵設置MenuItem的數(shù)字快捷鍵MenuItem setIcon(Drawable icon)icon:圖標Drawable對象設置MenuItem的圖標MenuItem setIntent(Intent intent)intent:與MenuItem綁定的intent對象為MenuItem綁定intent對象,當被選中時將會調用startActivity方法處理動作相應的Intent3.3
27、.1選項菜單和子菜單簡介方法名稱參數(shù)說明方法說明setOnMenuItemClickListener(MenuItem. OnMenuItemClickListener menuItemClickListener)menuItemClickListener:監(jiān)聽器為MenuItem設置自定義的監(jiān)聽器,一般情況下,使用回調方法onOptionsItemSelected會更有效率setShortcut(charnumericChar ,char alphaChar)numericChar:數(shù)字快捷鍵;alphaChar:字母快捷鍵為MenuItem設置數(shù)字快捷鍵和字母快捷鍵,當按下快捷鍵或按住Al
28、t鍵的同時按下快捷鍵時將會觸發(fā)MenuItem的選中事件setTitle(int title)title:標題的資源id為MenuItem設置標題setTitle(charSequence title)title:標題的名稱setTitleCondensed(charSequence title)title:MenuItem的縮略標題設置MenuItem的縮略標題,當MenuItem不能顯示全部的標題時,顯示縮略標題3.3.1選項菜單和子菜單簡介SubMenu繼承自Menu,每個SubMenu實例代表一個子菜單,SubMenu中常用的方法及說明如表3-20所示。方法名稱參數(shù)說明方法說明setH
29、eaderIcon(Drawableicon)icon:標題圖標Drawable對象設置子菜單的標題圖標setHeaderIcon(int iconRes)iconRes:標題圖標的資源idsetHeaderTitle(int titleRes)titleRes:標題文本的資源id設置子菜單的標題setHeaderTitle(charSequence title)title:標題文本對象setIcon(Drawableicon)icon:圖標Drawable對象設置子菜單在父菜單中顯示的標題setIcon(inticonRes)iconRes:圖標資源idsetHeaderView(View
30、view)view:用于子菜單標題的View對象設置指定View對象作為子菜單圖標3.2.2上下文菜單上下文菜單(ContextMenu)繼承自Menu。上下文菜單不同與選項菜單,選項菜單服務于Activity,而上下文菜單是注冊到某個View對象上的。如果一個View對象注冊了上下文菜單,用戶可以通過長按(約2秒)該View對象上以呼出上下文菜單。上下文菜單不支持快捷鍵(shortcut),其菜單選項也不能附帶圖標,但是可以為上下文菜單的標題指定圖標。3.3.2上下文菜單 表3-21 Activity類中與ContextMenu相關的方法及說明方法名稱參數(shù)說明方法說明onCreateCont
31、extMenu(ContextMenu menu,View v, ContextMenu. ContextMenuInfo menuInfo)menu:創(chuàng)建的上下文菜單v:上下文菜單依附的View對象;menuInfo:上下文菜單需要額外顯示的信息每次為View對象呼出上下文菜單時都將調用該方法onContextItemSelected(MenuItem item)item:被選中的上下文菜單選項當用戶選擇了上下文菜單選項后調用該方法進行處理onContextMenuClosed(Menu menu)menu:被關閉的上下文菜單當上下文菜單被關閉時調用該方法registerForContext
32、Menu(View view)View:要顯示上下文菜單的view對象為指定的View對象注冊一個上下文菜單3.4.1 對話框簡介對話框是Activity運行時顯示的小窗口,當顯示對話框時,當前Activity失去焦點而由對話框負責所有的人機交互。一般來說,對話框用于提示消息或彈出一個與程序主進程直接相關的小程序。在Android平臺下主要支持以下幾種對話框。1、提示對話框AlertDialog AlertDialog對話框可以包含若干按鈕(04個不等)和一些可選的單選按鈕和復選框。一般來說,AlertDialog的功能能夠滿足常見的對話框用戶界面的需求。2、進度對話框ProgressDialog ProgressDialog可以顯示進度輪(wheel)和進度條(bar),由于ProgressDialog繼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 承租地產代理協(xié)議
- 村集體房屋租賃合同
- 舉辦演出活動協(xié)議
- 演員服務協(xié)議書
- 農業(yè)智能化管理合作協(xié)議
- 攝影與攝像技術應用技術作業(yè)指導書
- 技術轉讓及研發(fā)合作合同
- 石油化工工程施工總承包服務合同
- 技術培訓課程內容安排說明
- 通信設備升級及維護合同
- 2024年全國《國防和兵役》理論知識競賽試題庫與答案
- 企業(yè)知識產權保護策略及實施方法研究報告
- 2024年07月11026經濟學(本)期末試題答案
- 2024年中小企業(yè)股權融資合同3篇
- 2024年01月11289中國當代文學專題期末試題答案
- 2024年秋季生物教研組工作計劃
- 2024年云南高中學業(yè)水平合格考歷史試卷真題(含答案詳解)
- 2025年董事長年會發(fā)言稿范文
- 醫(yī)院廉潔購銷合同
- 車間設備線路安裝方案
- 專題11 名著閱讀之《童年》(考題猜想)(期中真題速遞20題)(含答案解析)
評論
0/150
提交評論