android開發(fā)課件:菜單操作_第1頁
android開發(fā)課件:菜單操作_第2頁
android開發(fā)課件:菜單操作_第3頁
android開發(fā)課件:菜單操作_第4頁
android開發(fā)課件:菜單操作_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

AndroidMenuAndroid中的菜單操作Android中的幾種菜單選項(xiàng)菜單創(chuàng)建與操作XML中創(chuàng)建代碼動態(tài)創(chuàng)建上下文菜單創(chuàng)建與操作與選項(xiàng)菜單的區(qū)別彈出菜單創(chuàng)建與操作選項(xiàng)菜單和上下文菜單選項(xiàng)菜單

OptionsMenu上下文菜單

ContextMenuAndroid中的選項(xiàng)菜單是當(dāng)按住Menu鍵以后,在屏幕下方從下而上推出一個(gè)菜單選項(xiàng)。如果在模擬器中,可以使用來代替。ContextMenu是android的上下文菜單,選擇某項(xiàng)VIEW后長按,就會顯示出來。比如EditText就可以通過長按來彈出擁有“cut”,“copy”,“paste”等項(xiàng)的ContextMenu。在模擬器上模擬時(shí),請點(diǎn)擊VIEW,并保持一段時(shí)間。ActionBar菜單彈出菜單PopupMenuActionbar是android3.0的重要更新之一。Actionbar位于傳統(tǒng)標(biāo)題欄的位置,也就是顯示在屏幕的頂部,右側(cè)有一個(gè)Actionbar菜單。PopupMenu被稱為彈出式菜單,也被稱為下拉菜單??梢酝ㄟ^單擊事件,在指定組件上彈出PopupMenu,默認(rèn)情況下,PopupMenu會顯示在該組件的下方或上方。Android中的幾種菜單選項(xiàng)菜單創(chuàng)建與操作XML中創(chuàng)建代碼動態(tài)創(chuàng)建上下文菜單創(chuàng)建與操作彈出菜單創(chuàng)建與操作菜單的創(chuàng)建除了Actionbar比較特殊以外,其它幾種菜單,都可以通過兩種方式進(jìn)行創(chuàng)建和加載:代碼動態(tài)創(chuàng)建利用XML文件創(chuàng)建如果某些菜單項(xiàng)是固定不變的,強(qiáng)烈建議使用XML文件創(chuàng)建。如果菜單可能會隨著內(nèi)容而動態(tài)變化,則需要利用代碼動態(tài)創(chuàng)建。菜單類1.利用XML文件創(chuàng)建選項(xiàng)菜單首先,我們需要定義一個(gè)菜單內(nèi)容的XML文件,然后在代碼中利用inflate函數(shù)建立菜單資源。事實(shí)上,當(dāng)我們新建一個(gè)工程時(shí),系統(tǒng)已經(jīng)為我們做好框架了。上頁中的R.menu.main指的就是res->menu->main.xml文件。方法getMenuInflater()返回Activity的一個(gè)MenuInflater,使用這個(gè)對象,你可以調(diào)用inflate(),把菜單資源轉(zhuǎn)換為菜單對象.菜單XML文件元素元素說明<menu>定義一個(gè)菜單,它是菜單項(xiàng)的容器。<menu>必須是文件的根節(jié)點(diǎn),其內(nèi)部可包含一個(gè)或多個(gè)<item>和<group>元素。<item>創(chuàng)建一個(gè)MenuItem,它是菜單里面的一個(gè)單一的選項(xiàng)。菜單項(xiàng)中可以繼續(xù)包含<menu>元素,此時(shí)它就具有了子菜單。<group>一個(gè)可選的,不可見的,容納<item>元素的容器。它使你能夠?qū)Σ藛雾?xiàng)進(jìn)行分類,從而使同類的菜單項(xiàng)共享一些屬性,比如活動狀態(tài),可見狀態(tài)等二級子菜單點(diǎn)擊Group元素一個(gè)菜單組是由共享某些特性的一系列菜單項(xiàng)組成的.對于組,你可以:顯示或隱藏所有的菜單項(xiàng),使用方法setGroupVisible()Enable或disable所有的菜單項(xiàng),使用方法setGroupEnabled()指定所有的菜單項(xiàng)是否是checkable,使用方法setGroupCheckable()要創(chuàng)建組,你可以在資源文件中通過把<item>元素嵌套到一個(gè)<group>元素實(shí)現(xiàn)<item>中的屬性屬性說明android:id菜單項(xiàng)對應(yīng)的IDandroid:icon引用一個(gè)drawable用于菜單項(xiàng)的圖標(biāo)android:title引用一個(gè)字符串用于菜單項(xiàng)的標(biāo)題android:showAsAction是否放到ActionBar。你可以利用ActionBar部件提供的全部功能,將你的選項(xiàng)菜單項(xiàng)放在ActionBar的右上角。這個(gè)屬性可接受的值有:always,never,ifRoom,withText。

android:orderInCategory表明擺放的順序,不一定從0開始計(jì)算,但必須大于等于0,建議從0,1,2,3....這樣依次給出,并且與XML行文的順序一致。showAsAction屬性Checkable/Checked屬性一個(gè)菜單可以作為打開或關(guān)閉某個(gè)選項(xiàng)的用戶界面,此時(shí)使用一個(gè)checkbox用于獨(dú)立選項(xiàng),或使用一列radio按鈕用于多選一的一組選項(xiàng).下圖演示了帶有radio按鈕的checkable菜單項(xiàng)的子菜單的樣子.通過在

<item>

元素中使用

android:checkable

屬性,你可以為不同的菜單項(xiàng)分別定義其checkable行為,或者通過為<group>元素指定android:checkableBehavior屬性來定義組中所有菜單項(xiàng)的checkable行為.Checked屬性用于指定菜單項(xiàng)是否被選中注意:選項(xiàng)菜單中該屬性無效。該屬性可用于彈出菜單或者上下文菜單。注意:你可以在<item>元素中使用android:checked屬性為菜單項(xiàng)指定一個(gè)默認(rèn)狀態(tài),并且可以在代碼中使用setChecked()方法改變其checked狀態(tài)。當(dāng)一個(gè)checkable菜單項(xiàng)被選擇時(shí),系統(tǒng)調(diào)用相應(yīng)的響應(yīng)方法(比如onOptionsItemSelected()).在這個(gè)方法中你必須指定checkbox的狀態(tài).因?yàn)橐粋€(gè)checkbox或radio按鈕不會自動改變其狀態(tài).你可以使用isChecked()查詢菜單項(xiàng)的當(dāng)前狀態(tài),可使用setChecked()設(shè)置checked狀態(tài)。這應(yīng)該是Android的一個(gè)bug。選項(xiàng)菜單的事件響應(yīng)當(dāng)用戶選擇一個(gè)菜單項(xiàng)(也包括ActionBar上的動作項(xiàng)),系統(tǒng)會調(diào)用你的activity的方法onOptionsItemSelected()。這個(gè)方法會在參數(shù)中傳入選擇的菜單項(xiàng)。你可以通過調(diào)用方法getItemId()定位這個(gè)菜單項(xiàng),這個(gè)方法會返回菜單項(xiàng)的唯一ID在MainActivity.java文件中右鍵,選擇source->override/implement,選擇onOptionsItemSelected函數(shù)。小技巧如果你的程序中包含多個(gè)activitie并且它們提供相同的選項(xiàng)菜單,應(yīng)考慮創(chuàng)建一個(gè)只實(shí)現(xiàn)了onCreateOptionsMenu()和onOptionsItemSelected()的activity類,然后讓那些提供相同選項(xiàng)菜單的activity都從這個(gè)類派生.通過這種方式,你只需為這個(gè)類的子孫們管理一組代碼。如果你想在繼承者activitie們中添加菜單項(xiàng),只需重寫onCreateOptionsMenu().在其中調(diào)用super.onCreateOptionsMenu(menu),于是原始的菜單被創(chuàng)建,然后通過方法menu.add()添加新菜單項(xiàng)。你也可以重寫父類的方法來創(chuàng)建另外的菜單項(xiàng)們。如果你想在選項(xiàng)菜單創(chuàng)建后再去改變它怎么辦呢?你必須重寫方法onPrepareOptionsMenu().它會傳給你已創(chuàng)建的菜單的實(shí)例。在你想跟據(jù)應(yīng)用的狀態(tài),刪除、添加、disable,或者enable菜單項(xiàng)們的時(shí)候就用到這個(gè)函數(shù)了。在Android3.0及以后版本中,你必須在你想更新菜單之前主動調(diào)用方法invalidateOptionsMenu(),因?yàn)椴藛问且恢贝蜷_的.系統(tǒng)之后會調(diào)用onPrepareOptionsMenu(),于是你就可以更改菜單項(xiàng)了現(xiàn)在Android更傾向于使用ActionBar來代替選項(xiàng)菜單。2.動態(tài)創(chuàng)建選項(xiàng)菜單在大部分時(shí)候,利用XML創(chuàng)建選項(xiàng)菜單都是最好的選擇。但是有的時(shí)候,可能會需要動態(tài)的創(chuàng)建菜單。這種動態(tài)創(chuàng)建方式不僅僅適用于選項(xiàng)菜單,也適用于其它幾種類型的菜單。因此有必要進(jìn)行介紹。Menu.add函數(shù)函數(shù)體:menu.add(intgroupId,intitemId,intorder,charsequencetitle)groupId,組別,如果不分組的話就寫Menu.NONE,

Id,這個(gè)很重要,Android根據(jù)這個(gè)Id來確定不同的菜單

順序,哪個(gè)菜單項(xiàng)在前面由這個(gè)參數(shù)的大小決定

文本,菜單項(xiàng)的顯示文本返回值是MenuItem類,然后可以利用該類的setIcon,setTitle等函數(shù)去設(shè)置圖標(biāo)、標(biāo)題。Menu.addSubMenu函數(shù)通過Menu的addSubMenu()方法,可以添加子菜單。該方法返回SubMenu類,利用該類的add方法,可以添加子菜單中的菜單項(xiàng)。Android中的幾種菜單選項(xiàng)菜單創(chuàng)建與操作XML中創(chuàng)建代碼動態(tài)創(chuàng)建上下文菜單創(chuàng)建與操作與選項(xiàng)菜單的區(qū)別彈出菜單創(chuàng)建與操作創(chuàng)建上下文菜單的三個(gè)步驟上下文菜單是“依附”于某個(gè)具體VIEW的菜單,需要長按某個(gè)VIEW才會被調(diào)出。它的創(chuàng)建與使用主要包括三個(gè)步驟:在onCreateContextMenu函數(shù)中加載菜單項(xiàng)在activity的onCreate(...)方法中,使用registerForContextMenu函數(shù)為指定的view注冊上下文菜單在onContextItemSelected函數(shù)中響應(yīng)上下文菜單的單擊事件。(1)菜單加載Context.xml文件(2)“綁定”VIEW長按你注冊的VIEW就會彈出上下文菜單。如果是在模擬器上,點(diǎn)擊鼠標(biāo)后長按,不要松開。注意:雖然在xml中為菜單項(xiàng)定義了icon,但是并沒有顯示。因?yàn)樯舷挛牟藛尾恢С謭D標(biāo)(3)事件響應(yīng)重載onContextItemSelected函數(shù)即可ContextMenuvsOptionsMenuContextMenu必須通過Activity的registerForContextMenu(View)來進(jìn)行注冊,而OptionsMenu不用。ContextMenu不支持icon,而OptionsMenu支持彈出的方式不一樣OptionsMenu的擁有者是Activity,而上下文菜單的擁有者是Activity中的View。每個(gè)Activity有且只有一個(gè)OptionsMenu,它為整個(gè)Activity服務(wù)。而一個(gè)Activity往往有多個(gè)View,并不是每個(gè)View都有上下文菜單。onCreateOptionsMenu只在用戶第一次按“Menu”鍵時(shí)被調(diào)用,而onCreateContextMenu會在用戶每一次長按View時(shí)被調(diào)用,而且View必須已經(jīng)注冊了上下文菜單Android中的幾種菜單選項(xiàng)菜單創(chuàng)建與操作XML中創(chuàng)建代碼動態(tài)創(chuàng)建上下文菜單創(chuàng)建與操作與選項(xiàng)菜單的區(qū)別彈出菜單創(chuàng)建與操作創(chuàng)建彈出菜單PopupMenuPopupMenu代表彈出式菜單,它會在指定組件上彈出PopupMenu,默認(rèn)情況下,PopupMenu會顯示在該組件的下方或上方。PopupMenu可增加多個(gè)菜單項(xiàng),并可為菜單項(xiàng)增加子菜單。創(chuàng)建PopupMenu創(chuàng)建菜單的步驟非常簡單:調(diào)用newPopupMenu(Contextcontext,Viewanchor)創(chuàng)建下拉菜單,anchor代表要激發(fā)該

溫馨提示

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

評論

0/150

提交評論