【教学课件】第7章Fragment片段与动作列选单.ppt
《【教学课件】第7章Fragment片段与动作列选单.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章Fragment片段与动作列选单.ppt(73页珍藏版)》请在三一办公上搜索。
1、第7章 Fragment片段與動作列選單,7-1 再談Android事件處理7-2 動作列選單7-3 上下文選單7-4 彈出式選單7-5 Fragment片段,7-1 再談Android的事件處理,7-1-1 Android介面元件的事件 7-1-2 長按事件:onLongClickListener 7-1-3 鍵盤事件:onKeyListener 7-1-4 觸控事件:onTouchListener,7-1-1 Android介面元件的事件 使用View類別處理介面元件的事件,Android事件處理主要是發生在Activity活動類別的介面元件,我們是透過View類別來處理介面元件產生的事件
2、。基本上,活動的使用介面是View和ViewGroup物件所組成,在View類別定義有一組巢狀傾聽者介面,提供相關回撥方法(Callback Methods,即介面方法)來幫助我們執行事件處理,例如:觸摸Button元件,OnTouchListener介面的onTouch()方法就會呼叫。因為Activity類別本身已經實作一些傾聽者介面來處理事件,所以,有些事件我們需要自行建立和註冊傾聽者物件,例如:Click事件;有一些只需覆寫相關回撥方法,例如:KeyDown和KeyUp事件。,7-1-1 Android介面元件的事件 事件回撥方法,Android提供相當多事件回撥方法(Event Ca
3、llback Methods),簡單的說,事件傾聽者就是一組View類別的Java介面,在介面擁有一些回撥方法來處理使用者輸入的相關事件。常用的事件回撥方法,如下表所示:,7-1-2 長按事件:onLongClickListener,長按事件(LongClick Event)是使用者觸摸螢幕且停留超過一秒鐘時觸發,相當於Windows作業系統按下滑鼠右鍵觸發的事件。基本上,長按事件的事件處理架構和Click事件相同,它是實作OnLongClickListener傾聽者介面的onLongClick()方法,如下所示:public boolean onLongClick(View v)/處理Lon
4、gClick事件的程式碼 return false;,7-1-3 鍵盤事件:onKeyListener 說明,鍵盤事件(Keyboard Event)主要是指按下鍵盤按鍵的KeyDown和放開按鍵的KeyUp事件,因為Activity類別實作KeyEvent.Callback介面,所以,我們只需在繼承類別覆寫onKeyDown()和onKeyUp()方法就可以處理這兩種事件。,7-1-3 鍵盤事件:onKeyListener KeyDown事件,以KeyDown事件的onKeyDown()方法為例,其架構如下所示:public boolean onKeyDown(int keyCode,Key
5、Event event)if(keyCode=KeyEvent.KEYCODE_DEL)/按下的是Del鍵 return true;return super.onKeyDown(keyCode,event);,7-1-4 觸控事件:onTouchListener 說明,Android行動裝置的特點是觸控螢幕,因為Click事件也適用在觸控螢幕,但是Touch事件不能使用在行動裝置的鍵盤,換句話說,對於大部分介面元件來說,建議使用Click事件即可,只有一些特殊觸控操作的手勢(Gestures)才需要使用到Touch事件。,7-1-4 觸控事件:onTouchListener 動作,觸控事件(T
6、ouch Event)主要是在處理手勢的三種動作:ACTION_DOWN、ACTION_MOVE和ACTION_UP(類似滑鼠拖拉過程),如下所示:ACTION_DOWN:手勢動作的開始,可以在手指第1個接觸點的座標建立一個虛擬指標,類似滑鼠游標,只是你看不見。ACTION_MOVE:當指標在螢幕上移動時就產生此動作(即手指在螢幕上滑動,如同滑鼠游標在螢幕上移動)。ACTION_UP:手指離開螢幕,可以取得最後1個接觸點指標的座標。,7-1-4 觸控事件:onTouchListener 判斷動作,在實作的onTouch()方法可以從參數MotionEvent判斷是哪一種動作,如下所示:publ
7、ic boolean onTouch(View v,MotionEvent event)int act=event.getAction();switch(act)case MotionEvent.ACTION_DOWN:/處理ACTION_DOWN break;case MotionEvent.ACTION_UP:/處理ACTION_UP break;case MotionEvent.ACTION_MOVE:/處理ACTION_MOVE break;return false;,7-2 動作列選單,7-2-1 動作列的基礎 7-2-2 建立動作列選單 7-2-3 子選單 7-2-4 選項按鈕選單
8、,7-2 動作列選單 種類,Android提供相關機制可以替活動或指定元件新增選單,主要的選單有三種,如下所示:選項選單(Options Menu):當使用者按下行動裝置【MENU】鍵,可以在下方顯示選項選單,因為目前裝置大多沒有【MENU】鍵,所以,選項選單已經整合至動作列的overflow選單圖示,也稱為Overflow選單。上下文選單(Context Menu):即Windows作業系統右鍵的快顯功能表,當使用者長按介面元件超過一秒鐘,就會顯示上下文選單。彈出式選單(Popup Menu):我們可以在停泊元件下方顯示類似對話方塊的彈出式選單,如果空間不足,就顯示在上方。,7-2-1 動作
9、列的基礎-認識動作列1,動作列是位在活動上方的一個固定區域,一種介面元件來顯示活動的標題文字、圖示和切換與巡覽功能,也可以用來指示Android應用程式目前所在的活動,和顯示選單(Menu)。,7-2-1 動作列的基礎-認識動作列2,Android最常使用的是選項選單(Options Menu),當使用者按下行動裝置的實體【MENU】鍵,可以在下方顯示最多6個選項的選單。不過,目前Android行動裝置大多已經沒有實體【MENU】鍵,選項選單也整合至動作列的overflow選單圖示,對於沒有實體【MENU】鍵的裝置來說,我們需要點選標題列最右方【垂直3點】圖示來開啟選單,如右圖所示:,7-2-
10、1 動作列的基礎 選單資源的XML檔案(說明),選單資源XML檔案的內容是在選單中顯示的選項,我們可以直接使用XML標籤來定義選單的選項,選單資源檔可以使用在動作列選單、上下文選單和彈出式選單。,7-2-1 動作列的基礎 選單資源的XML檔案(新增),在Android Studio專案Ch7_2_1的Project視窗的【appres】上,執行【右】鍵快顯功能表的New/Android resource file指令新增資源檔,可以看到New Resource File對話方塊。,7-2-1 動作列的基礎 選單資源的XML檔案(範例),7-2-1 動作列的基礎 選單資源的XML檔案(選單圖示)
11、,選單圖示是位在專案實際路徑app/src/main/res/drawable目錄下的同名圖示檔(Project視窗如果選【Android】檢視,顯示的專案路徑和實際路徑並不相同),如下圖所示:,7-2-1 動作列的基礎 再談ActionBarActivity活動類別1,ActionBarActivity類別是Activity類別的子類別,可以讓我們在活動使用AppCompat支援函數庫(Support Library)的動作列功能,以便讓API 7以上版本(Android 2.1)的活動都擁有一致的動作列。總之,如果在Android活動需要使用動作列,我們需要使用ActionBarActiv
12、ity類別(Minimum SDK如果選最新API 21 Android 5.0版,可以直接使用Activity類別,如果選之前版本都需要使用AppCompat支援函數庫來相容最新版動作列)。,7-2-1 動作列的基礎 再談ActionBarActivity活動類別2,首先在Java類別檔開頭匯入ActionBarActivity類別,如下所示:import android.support.v7.app.ActionBarActivity;MainActivity類別需要改為繼承ActionBarActivity,而不是Activity類別,如下所示:public class MainActi
13、vity extends ActionBarActivity.,7-2-1 動作列的基礎 將選單資源XML檔案建立成選單,因為選單資源XML檔案不會自動成為選單,我們需要執行Code/Override Methods指令,在MainActivity類別新增onCreateOptionsMenu()方法來將選單資源建立成選單,如下所示:Override public boolean onCreateOptionsMenu(Menu menu)MenuInflater inflater=getMenuInflater();,menu);return super.onCreateOptionsMen
14、u(menu);,7-2-2 建立動作列選單 說明,Android Studio的【Blank Activity】活動範本預設新增動作列的menu_main.xml和相關Java程式碼(為了縮短程式碼長度,本書很多範例刪除這部分程式碼),在這一節筆者準備直接使用此活動範本來建立動作列選單。,7-2-2 建立動作列選單 處理動作列選單的選項,在第7-2-1節已經說明如何建立動作列選單,這一節將說明處理選擇的選項,我們需要在MainActivity類別覆寫onOptionsItemSelected()方法來判斷使用者的選擇。【Blank Activity】活動範本會自動產生此方法,如下所示:Ove
15、rridepublic boolean onOptionsItemSelected(MenuItem item)switch(item.getItemId()case:.break;case:.break;return super.onOptionsItemSelected(item);,7-2-3 子選單 說明,在動作列選單中,每一個選項可以是另一個選單,稱為子選單(Sub Menu),不過,子選單並不允許再擁有另一個子選單。例如:Android Studio專案Ch7_2_3的執行結果,如下圖所示:,7-2-3 子選單 選單資源的XML檔,在選單資源的XML檔的標籤中,可以看到另一個men
16、u元素,如下所示:,7-2-3 子選單 onOptionsItemSelected()方法,public boolean onOptionsItemSelected(MenuItem item)TextView output=(TextView);switch(item.getItemId()case R.id.item01:output.setText(項目1);return true;case R.id.item02:output.setText(子選單);return true;case R.id.item03:output.setText(子項目1);return true;case
17、R.id.item04:output.setText(子項目2);return true;case R.id.item05:output.setText(項目2);return true;return super.onOptionsItemSelected(item);,7-2-4 選項按鈕選單 說明,在動作列選單也可以建立成選擇功能的選項按鈕選單,我們可以群組選項來建立成選項按鈕,例如:Android Studio專案Ch7_2_4的執行結果,如下圖所示:,7-2-4 選項按鈕選單 選單資源XML檔,選單資源XML檔是使用標籤來群組選項建立成選項按鈕,如下所示:.,7-2-4 選項按鈕選單
18、onOptionsItemSelected()方法,在覆寫onOptionsItemSelected()方法是使用android:id屬性值判斷執行功能,不過,我們需要自行處理是否選擇指定選項,如下所示:public boolean onOptionsItemSelected(MenuItem item)Button btn=(Button);switch(item.getItemId()case:if(item.isChecked()item.setChecked(false);else item.setChecked(true);btn.setBackgroundColor(Color.R
19、ED);return true;.case:if(item.isChecked()item.setChecked(false);else item.setChecked(true);btn.setBackgroundColor(Color.GREEN);return true;return super.onOptionsItemSelected(item);,7-3 上下文選單,7-3-1 浮動上下文選單 7-3-2 上下文的動作模式,7-3 上下文選單,上下文選單(Context Menu)就是Windows作業系統右鍵的快顯功能表,當使用者長按介面元件超過一秒鐘,就會顯示上下文選單。And
20、roid提供2種方法來建立上下文選單,如下所示:浮動上下文選單:類似對話方塊的選單,如果元件支援,當長按介面元件,就會顯示浮動上下文選單。上下文的動作模式:此模式是系統實作的動作模式(Action Mode),可以在動作列上方顯示上下文動作列,並且支援複選,如果是開發Android 3.0以上版本的應用程式,建議使用此模式來建立上下文選單。,7-3-1 浮動上下文選單-說明,類似對話方塊的選單,如果元件支援,當長按介面元件,就會顯示浮動上下文選單。在Android建立浮動上下文選單和之前的選單相似,我們一樣是使用選單資源檔來建立選單的選項。,7-3-1 浮動上下文選單-建立上下文選單選單,如同
21、動作列選單,我們也是在onCreateContextMenu()方法將選單資源建立成上下文選單,如下所示:menu.setHeaderTitle(選擇按鈕的背景色彩);,menu);上述程式碼呼叫setHeaderTitle()方法指定標題文字後,依序使用串流方法呼叫getMenuInflater()和inflate()方法將選單資源的選項新增至Menu物件。上下文選單處理選取選項的事件處理是覆寫onContextItemSelected()方法,其結構和onOptionsItemSelected()方法相同,筆者就不重複說明。,7-3-1 浮動上下文選單-註冊上下文選單,上下文選單是附屬在指
22、定介面元件,我們需要註冊上下文選單,例如:Button元件或LinearLayout版面配置等,以便長按介面元件可以顯示上下文選單,如下所示:public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState););LinearLayout layout=(LinearLayout);registerForContextMenu(layout);,7-3-2 上下文的動作模式 說明,上下文的動作模式(Contextual Action Mode)是在動作列上方顯示上下文動作列,此模式的上下文選單支援複
23、選。建立的基本步驟是在實作ActionMode.Callback介面後,呼叫startActionMode()方法來顯示上下文選單。,7-3-2 上下文的動作模式 使用匿名內層類別實作ActionMode.Callback介面1,首先使用匿名內層類別實作ActionMode.Callback介面來建立和處理上下文選單的選擇,如下所示:mCallback=new ActionMode.Callback()Override public boolean onPrepareActionMode(ActionMode mode,Menu menu)return false;Override publi
24、c void onDestroyActionMode(ActionMode mode)mMode=null;,7-3-2 上下文的動作模式 使用匿名內層類別實作ActionMode.Callback介面2,Override public boolean onCreateActionMode(ActionMode mode,Menu menu)/建立上下文選單 return true;Override public boolean onActionItemClicked(ActionMode mode,MenuItem item)/處理使用者的選擇 return false;,7-3-2 上下文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 Fragment 片段 动作 选单

链接地址:https://www.31ppt.com/p-5659297.html