android應用開發(fā)課堂錄制視頻-課件第五章控件及事件_第1頁
android應用開發(fā)課堂錄制視頻-課件第五章控件及事件_第2頁
android應用開發(fā)課堂錄制視頻-課件第五章控件及事件_第3頁
android應用開發(fā)課堂錄制視頻-課件第五章控件及事件_第4頁
android應用開發(fā)課堂錄制視頻-課件第五章控件及事件_第5頁
免費預覽已結束,剩余36頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章Android高級控件及

事件處理應用Android

應用開發(fā)教程第五章Android高級控件及事件處理應用Android事件處理機制1Android常用高級控件2UI設計及應用案例3Android事件在Android的應用中,用戶與界面的交互操作會觸發(fā)相應的事件。在Android平臺上,對事件的處理機制有兩種:基于回調機制的事件處理?;诒O(jiān)聽接口的事件處理。View類提供了許多公用的捕獲用戶在界面上觸發(fā)事件的方法。為了捕獲和處理事件,必須繼承某個類(如View類),并重載這些方法,以便自己定義具體的處理邏輯代碼。Android事件處理機制第五章Android高級控件及事件處理應用基于回調機制的事件處理onKeyDown(int,KeyEvent)–按下一個鍵時調用。第一個參數為int類型,為被按下的鍵的鍵值(即鍵盤碼)。注意:不同型號的手機中,鍵值可能不同。第二個參數為按鍵事件的對象,封裝了觸發(fā)事件的詳細信息。返回值是boolean類型,當返回true時,表示已完整地處理了該事件。onKeyUp(int,KeyEvent)–釋放一個鍵時調用。第一個參數為int類型,為釋放鍵的鍵值(即鍵盤碼)。第二個參數為事件封裝類的對象,與onKeyDown方法中的含義相同。返回值是boolean類型,與onKeyDown方法的返回值含義相同。onKeyDown和onKeyUp的使用方法基本相同,用戶如果需要對按鍵被按下或抬起時進行事件處理,可通過重寫該方法實現。Android事件處理機制第五章Android高級控件及事件處理應用基于回調機制的事件處理onTouchEvent(MotionEvent)–觸摸屏幕時調用。參數為手機屏幕觸摸事件封裝類的對象,封裝了該事件的詳細信息。返回值是boolean類型,與鍵盤響應事件的返回值含義相同。以下情形由onTouchEvent方法處理屏幕被按下,此時getAxtion()的值為ACTION_DOWN。屏幕被抬起,此時getAxtion()的值為ACTION_UP。在屏幕中拖動,此時getAxtion()的值為ACTION_MOVE。Android事件處理機制第五章Android高級控件及事件處理應用實例1:在屏幕區(qū)域內觸摸滑動,捕捉按下、抬起事件的狀態(tài),滑動的坐標,觸點壓力,觸點的大小等信息。使用onTouchEvent(MotionEvent)事件。在代碼中將使用下列get…()方法:使用MotionEvent.getAction()方法來獲取屏幕被按下等事件的狀態(tài);使用Event.getX(),Event.getY()方法來獲取觸點坐標值;使用Event.getPressure()方法來獲取觸屏壓力大??;使用Event.getSize()方法來獲取觸點尺寸。項目名:Activity_Touch運行結果如圖。Android事件處理機制第五章Android高級控件及事件處理應用基于回調機制的事件處理onTrackballEvent(MotionEvent)–軌跡球移動時調用。其參數與返回值和上面的方法相同。軌跡球與手機鍵盤軌跡球使用簡單。軌跡球比鍵盤操作表示狀態(tài)的數據更細化。在模擬器運行狀態(tài)下,F6鍵打開模擬器軌跡球,用鼠標移動模擬軌跡球事件。Android事件處理機制第五章Android高級控件及事件處理應用基于回調機制的事件處理onFocusChanged(boolean,int,Rect)–視圖中焦點改變時調用

第一個參數是boolean類型,表示是否獲得焦點,當該控件獲得焦點時為true。第二個參數是int類型,表示焦點移動的方向。第三個參數是Rect類型,表示觸發(fā)事件時,前一個獲得焦點的矩形區(qū)域。即表示焦點是從哪里來的,如果不可用則為null。與焦點有關的方法setFocusable:設置控件是否可以擁有焦點。isFocusable:監(jiān)測控件是否可以擁有焦點。setNextFocusDownId:設置焦點向下移動后獲得焦點控件的ID。hasFocus:返回了控件的父控件是否獲得了焦點。requestFocus:試圖獲得焦點。isFocusableTouchMode:在觸摸模式下,設置控件是否可以擁有焦點。默認情況下是不能的。Android事件處理機制第五章Android高級控件及事件處理應用基于監(jiān)聽接口的事件處理基于監(jiān)聽接口的事件處理模型中的兩個對象。事件源:指事件所發(fā)生的控件。事件監(jiān)聽器:用來處理事件的對象,實現特定的接口,根據事件的不同重載不同的事件處理方法來處理事件。將事件源與事件監(jiān)聽器聯系到一起,需要為事件源注冊監(jiān)聽。當事件發(fā)生時,系統會自動通知事件監(jiān)聽器來處理相應的事件。事件處理過程:為事件源對象添加監(jiān)聽器對象;當事件發(fā)生時,系統會將事件封裝成相應類型的事件對象,發(fā)送給注冊到事件源的監(jiān)聽器對象;當監(jiān)聽器對象接收事件對象后,系統會調用監(jiān)聽器中相應的事件處理方法來處理事件并給出響應。Android事件處理機制第五章Android高級控件及事件處理應用監(jiān)聽器接口與回調方法OnClickListener是處理單擊事件的接口。onClick():對應接口的回調方法。setOnClickListener():為指定的View對象設置OnClickListener監(jiān)聽器。觸發(fā)事件的操作在觸摸模式下,View對象被按下并抬起。在鍵盤模式下,View對象獲得焦點后,單擊“確定”鍵或按下軌跡球。OnLongClickListener是處理長按下事件的接口。onLongClick():對應接口的回調方法。Android事件處理機制第五章Android高級控件及事件處理應用監(jiān)聽器接口與回調方法OnFocusChangeListener是處理控件焦點發(fā)生改變事件的接口。onFocusChange():對應接口的回調方法。OnKeyListener是對手機鍵盤進行監(jiān)聽的接口。onKey():對應接口的回調方法。OnTouchListener是處理手機屏幕事件的監(jiān)聽接口。onTouch():對應接口的回調方法。這個方法處理觸摸時間,包括在屏幕上按下,釋放和移動手勢時調用。第五章Android高級控件及事件處理應用Android事件處理機制監(jiān)聽器接口與回調方法OnCreateContextMenuListener是處理上下文菜單顯示事件的監(jiān)聽接口。onCreateContextMenu():對應接口的回調方法。為上述相應接口設置監(jiān)聽器對象方法:set***Listener():將指定的View對象設置為***接口的監(jiān)聽器。第五章Android高級控件及事件處理應用Android事件處理機制事件監(jiān)聽器接口的實現方法在構造方法中使用匿名內部類實現事件監(jiān)聽器接口通常在activity組件的onCreate事件中直接定義,直接動作。代碼如:publicvoidonCreate(BundlesavedInstanceState){…Buttonbutton1=(Button)findViewById(R.id.myButton1);button1.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ …; } });…}第五章Android高級控件及事件處理應用Android事件處理機制事件監(jiān)聽器接口的實現方法外部類實現事件監(jiān)聽器接口通常是在Activity組件中實現其接口。代碼如:

publicclassTestMediaextendsActivityimplementsView.OnClickListener{ … @override publicvoidonCreate(BundlesavedInstanceState){ … Buttonbtn1=(Button)findViewById(R.id.myButton1); Buttonbtn2=(Button)findViewById(R.id.myButton2); btn1.setOnClickListener(); btn2.setOnClickListener(); } … @override publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.myButton1: …//dosomething break; caseR.id.myButton2: …//dosomething break; } } }第五章Android高級控件及事件處理應用Android事件處理機制事件監(jiān)聽器接口的實現方法內部類實現事件監(jiān)聽器接口類似于第二種,代碼如: publicclassTestMediaextendsActivity{ … @override publicvoidonCreate(BundlesavedInstanceState){ … Buttonbtn1=(Button)findViewById(R.id.myButton1); Buttonbtn2=(Button)findViewById(R.id.myButton2); btn1.setOnClickListener(newClickEvent()); btn2.setOnClickListener(newClickEvent()); } … classClickEventimplementsView.OnClickListener{ publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.myButton1: …//dosomething break; caseR.id.myButton2: …//dosomething break; } } } }第五章Android高級控件及事件處理應用Android事件處理機制實例2:OnClickListener舉例項目名:Activity_RadioGroupClearRadioGroupActivity.java……publicclassRadioGroupActivityextendsActivityimplementsView.OnClickListener{privateRadioGroupmRadioGroup;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.radio_group);setTitle("RadioGroup_Activity");mRadioGroup=(RadioGroup)findViewById(R.id.menu);ButtonclearButton=(Button)findViewById(R.id.clear);clearButton.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){mRadioGroup.clearCheck();}}使用接口。第五章Android高級控件及事件處理應用Android事件處理機制實例3:OnClickListener舉例項目名:Activity_BtnBtnActivity.java……publicclassBtnActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setTitle("EditText_Activity"); setContentView(R.layout.btn); Buttonget_edit_view_button=(Button)findViewById(R.id.get_edit_view_button); get_edit_view_button.setOnClickListener(newget_edit_view_button_listener()); }

privateclassget_edit_view_button_listenerimplementsView.OnClickListener{ publicvoidonClick(Viewv){ EditTextedit_text=(EditText)findViewById(R.id.edit_text); CharSequenceedit_text_value=edit_text.getText(); setTitle("輸入的值:"+edit_text_value); } }}不使用接口。第五章Android高級控件及事件處理應用Android事件處理機制Android常用高級控件Widget常用高級控件與適配器相關的控件:pleteTextView、Spinner、ListView、GridView、Gallery視圖控件:ScrollView、TabHost、ImageSwitcher滑塊與進度條:ProgressBar、SeekBar、RatingBar……第五章Android高級控件及事件處理應用Android常用高級控件pleteTextViewpleteTextView類繼承自EditText類。位于android.widget包下。當輸入了與事先為該控件定義的一組字符串集中相關的信息時,會自動出現下拉選項,供用戶選擇。在下拉列表中的選項內容,需要綁定到數據源上,綁定數據需要用到適配器(Adapter)。第五章Android高級控件及事件處理應用Android常用高級控件Adapter(適配器)Adapter是界面數據綁定的一種理解。它所操縱的數據如數組,鏈表,數據庫,集合等。常用的適配器有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,它們都是繼承BaseAdapter。Adapter都位于android.widget包下。Adapter對象有兩個主要責任:用數據填充布局處理用戶的選擇使用ArrayAdapter為下拉列表加載數據,有兩種方式:使用Java代碼動態(tài)地定義下拉列表的數據源。使用xml文件預先定義數組資源描述文件。第五章Android高級控件及事件處理應用Android常用高級控件實例4:pleteTextView的使用方法項目名:Activity_pleteTxt。布局文件:plete.xml。Java代碼:pleteTextViewActivity.java。第五章Android高級控件及事件處理應用Android常用高級控件Spinner(下拉列表)位于android.widget包下。是一個一行的下拉列表框,只有當用戶點擊這個控件時,才會下拉出選項列表供用戶選擇。在下拉列表中的選項內容,需要綁定到數據源上,綁定數據需要用到適配器(Adapter)。實現一個Spinner需要完成以下五個步驟。第一步,為下拉列表項定義數據源;第二步,實例化一個適配器;第三步,為Spinner設置下拉列表下拉時的顯示樣式;第四步,將適配器添加到Spinner上;第五步,為Spinner添加監(jiān)聽器,設置各種事件的響應操作。第五章Android高級控件及事件處理應用Android常用高級控件實例5:設計Spinner,用于選擇所在城市名。項目名:Activity_Spinner。在res/values目錄下創(chuàng)建一個名為arrays.xml的文件。Java代碼:SpinnerActivity.java。給出兩種方式定義Spinner下拉列表內容。使用getStringArray()方法從xml數組描述文件中載入數組的值。使用onItemSelected()定義當選擇了下拉選項時的回調方法。運行結果如圖:第五章Android高級控件及事件處理應用Android常用高級控件實例5:設計Spinner,用于選擇所在城市名。onItemSelected()方法的格式為:publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intarg2,longarg3)參數arg0是適配器視圖對象,這里指Spinner的下拉列表視圖。其中,AdapterView是內容由適配器來決定的視圖類,<?>是適配器里內容的類型。參數arg1是適配器視圖里的被點擊的對象。可以理解成下拉列表框中被選中的那一項。參數arg2指在下拉列表選項中被選擇項的位置。參數arg3指被點擊選項所在行的行ID號。第五章Android高級控件及事件處理應用Android常用高級控件ListViewListView是一種列表視圖,將ListAdapter所提供的各個控件顯示在一個垂直的、可滾動的列表中。ListView常用的監(jiān)聽包括:單擊監(jiān)聽,添加單擊監(jiān)聽使用ListView.setOnItemClickListener();滾動監(jiān)聽,添加滾動監(jiān)聽使用ListView.setOnItemSelectedListener();長按監(jiān)聽,添加長按監(jiān)聽使用setOnCreateContextMenuListener()。第五章Android高級控件及事件處理應用Android常用高級控件ListView實現一個ListView控件,主要分以下四步驟:第一步,準備ListView要顯示的數據,使用一維或多維動態(tài)數組保存數據;第二步,構建適配器。由于ListView的每一個Item的組成可簡單,也可能比較復雜,所以根據需要,可選擇ArrayAdapter,SimpleAdapter或BaseAdapter來為ListView綁定數據;第三步,使用setAdapter(),把適配器添加到ListView,并顯示出來。第四步,為ListView添加監(jiān)聽器,設置各種事件(如單擊、滾動、單擊長按等)的響應操作。第五章Android高級控件及事件處理應用Android常用高級控件實例6:使用SimpleAdapter適配器為ListView綁定數據,列出國內一些著名網站名及網址信息,單擊某一條目時,在標題欄顯示其網址信息。第五章Android高級控件及事件處理應用項目名:Activity_ListViewSimpleAdtJava代碼:ListViewActivity.java使用simpleAdapter構造數據需要用到ArrayList,其中的HashMap對象對應于ListView中的每一Item。ListView中的每一Item包括一個ImageView控件和兩個分上下行的TextView控件。這個布局文件為listitem.xml。添加OnItemClickListener()監(jiān)聽,重寫onItemClick()回調方法。Android常用高級控件實例7:使用BaseAdapter適配器為ListView綁定數據,并且動態(tài)定義顯示效果。在網站名及網址信息后添加一個按鈕控件,當滾動時在標題欄顯示其網址信息;當單擊每個條目中的按鈕時,在標題欄顯示單擊的條目ID和網址。第五章Android高級控件及事件處理應用項目名:Activity_ListViewBaseAdtJava代碼:ListViewBaseAdtActivity.java使用動態(tài)生成顯示布局,需要在BaseAdapter的類對象定義中重寫getView()方法,并在該方法內動態(tài)創(chuàng)建布局對象以及其內的控件對象。為BaseAdapter提供的數據源放在xml描述文件中,使用getResources().getIdentifier()方法獲取這些數據的ID,并加載到適配器中。不能在onCreate之前使用getResources()方法。GridViewGridView是一種以二維表格形式顯示控件的視圖,所顯示的控件來自ListAdapter適配器。GridView的屬性與方法:屬性方法含義android:columnWidthsetColumnWidth()設置列的寬度android:gravitysetGravity()設置對齊方式android:numColumnssetNumColumns()設置各個元素之間的水平距離android:horizontalSpacingsetHorizontalSpacing()設置列數android:verticalSpacingsetVerticalSpacing()設置各個元素之間的豎直距離第五章Android高級控件及事件處理應用Android常用高級控件實例8:使用GridView實現九宮圖,每個網絡中圖片在上方,圖片的編號在下方。第五章Android高級控件及事件處理應用Android常用高級控件項目名:Activity_GridView設計GridView的單元格布局文件:res/layout目錄下的pic_item.xml。Java代碼:GridViewActivity.java在定義BaseAdapter子類時使用res/layout目錄下的xml布局文件,要使用LayoutInflater類。為該GridView對象添加滾動監(jiān)聽OnItemClickListener(),重寫onItemClick()回調方法。GalleryGallery是Android中的圖片庫控件,是水平滾動顯示圖片資源的列表。Gallery的屬性與方法:屬性方法含義android:animationDurationsetAnimationDuration()設置動畫過渡時間android:gravitysetGravity()設置在父控件中的對齊方式android:unselectedAlphasetUnselectedAlpha()設置選中的圖片透明度android:spacingsetSpacing()設置圖片之間的空白大小第五章Android高級控件及事件處理應用Android常用高級控件實例9:使用Gallery實現一個畫廊,該畫廊展示IT業(yè)一些著名人士照片。項目名:Activity_GalleryJava代碼:GalleryActivity.java第五章Android高級控件及事件處理應用Android常用高級控件ScrollView(滾動視圖)ScrollView類位于android.widget包下,它繼承自FrameLayout。在ScrollView中控件的內容在一屏幕顯示不完時,便會自動產生滾動功能,通過縱向滾動的方式以顯示被擋住的部分內容。ScrollView只支持垂直滾動。ScrollView中只能加一個控制,

一般是嵌入一個線性布局。第五章Android高級控件及事件處理應用Android常用高級控件TabHost(選項卡)TabHost類位于android.widget包下,它繼承自FrameLayout。如果它包含了多個布局,但同一時刻,只顯示其中一個布局的內容。它是選項卡的封裝類,用于創(chuàng)建選項卡窗口。例:使用TabHost控件分頁展示IT業(yè)一些著名人士信息。項目名:Activity_TabHostJava代碼:TabHostActivity.java第五章Android高級控件及事件處理應用Android常用高級控件ImageSwitcher&GalleryImageSwitcher是Android中控制圖片展示效果的一個控件。常用方法setImageURI(Uriuri):設置圖片地址setImageResource(intresid):設置圖片資源庫setImageDrawable(Drawabledrawable):繪制圖片例:使用TabHost控件分頁展示IT業(yè)一些著名人士信息。項目名:Activity_ImageSwitchJava代碼:ImageSwitchActivity.java第五章Android高級控件及事件處理應用Android常用高級控件Android常用高級控件進度條與滑塊ProgressBar是一種列表視圖進度條控件。通過啟動一個后臺線程定時更改進度數據。SeekBar是滑塊控件,繼承

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論