版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章使用系統(tǒng)組件Android移動(dòng)應(yīng)用程序開發(fā)教程第5章使用系統(tǒng)組件Menu(菜單)1Dialog(對話框)2通知3ActionBar4Fragment55.1MenuAndroid平臺下有三類菜單:選項(xiàng)菜單(OptionMenu)上下文菜單(ContentMenu)子菜單(Submenu)在Android中通過回調(diào)方法創(chuàng)建菜單并處理菜單按下的事件。5.1Menu選項(xiàng)菜單(OptionMenu)選項(xiàng)菜單服務(wù)于Activity。當(dāng)按下手機(jī)的Menu鍵,在屏幕底端彈出選項(xiàng)菜單。選項(xiàng)菜單最多顯示6個(gè),當(dāng)菜單選項(xiàng)多于6個(gè)時(shí)將只顯示前5個(gè)菜單,最后的菜單項(xiàng)為一個(gè)擴(kuò)展菜單選項(xiàng)。單擊擴(kuò)展菜單選項(xiàng),將彈出其余的菜單項(xiàng)。擴(kuò)展菜單項(xiàng)不能顯示圖標(biāo)。5.1Menu選項(xiàng)菜單(OptionMenu)選項(xiàng)菜單OptionMenu定義在android.view.Menu包中。一個(gè)選項(xiàng)菜單是一個(gè)Menu對象,在Menu對象中可以添加菜單項(xiàng)MenuItem。選項(xiàng)菜單的功能需要開發(fā)人員編程來實(shí)現(xiàn)。開發(fā)選項(xiàng)菜單主要用到的類:Menu、MenuItem、SubMenu。選項(xiàng)菜單常用的回調(diào)方法:方法名稱說明onCreateOptionsMenu()初始化選項(xiàng)菜單,只在首次顯示菜單時(shí)調(diào)用。onOptionsItemSelected()當(dāng)某菜單項(xiàng)被選中時(shí)調(diào)用,默認(rèn)返回false。onOptionsMenuClosed()當(dāng)選項(xiàng)菜單關(guān)閉、或按下返回鍵、或選擇了某菜單項(xiàng)時(shí)調(diào)用。onPrepareOptionsMenu()為程序準(zhǔn)備選項(xiàng)菜單,每次選項(xiàng)菜單顯示前調(diào)用。5.1MenuMenu類Menu類對象是一個(gè)菜單,它包含一個(gè)或多個(gè)菜單項(xiàng)MenuItem,也可以包含子菜單SubMenu。Menu的常用方法:方法名稱說明add()向Menu添加一個(gè)菜單項(xiàng),返回MenuItem對象。addSubMenu()向Menu添加一個(gè)子菜單,返回SubMenu對象。finditem()返回指定id的MenuItem對象。size()返回Menu中菜單項(xiàng)的個(gè)數(shù)。5.1Menu菜單項(xiàng)MenuItem常用的成員方法:方法名稱說明setAlphabeticShortcut()設(shè)置MenuItem的字母快捷鍵。setNumericShortcut()設(shè)置MenuItem的數(shù)字快捷鍵。setIcon()設(shè)置MenuItem的圖標(biāo)。setIntent()為MenuItem綁定Intent對象,當(dāng)被選中時(shí)調(diào)用startActivity方法處理動(dòng)作相應(yīng)的Intent。setOnMenuItemClickListener()為MenuItem設(shè)置自定義監(jiān)聽器。一般情況下,使用回調(diào)方法onOptionsItemSelected效率更高。5.1Menu設(shè)計(jì)一個(gè)選項(xiàng)菜單時(shí)要為用戶提供交互接口,以響應(yīng)菜單項(xiàng)被單擊的事件。創(chuàng)建選項(xiàng)菜單需要如下步驟:第一步,重寫Activity的onCreateOptionsMenu(Menumenu)方法,當(dāng)我們第一次打開菜單時(shí)該方法被自動(dòng)調(diào)用。第二步,調(diào)用Menu的add()方法添加菜單項(xiàng)MenuItem,此時(shí),可以調(diào)用MenuItem的setIcon()方法來為菜單項(xiàng)設(shè)置圖標(biāo)。第三步,定義菜單項(xiàng)被選擇之后的回調(diào)事件。有兩種方法:其一,重寫Activity的onOptionsItemSelected()方法,當(dāng)菜單項(xiàng)MenuItem被選擇時(shí),該方法用于響應(yīng)事件;其二,為每個(gè)菜單項(xiàng)MenuItem對象添加OnMenuItemClickListener監(jiān)聽器,在其中定義處理菜單選項(xiàng)中的事件。5.1Menu實(shí)例:Android選項(xiàng)菜單設(shè)置選項(xiàng)菜單,其中有兩個(gè)菜單項(xiàng):“開始”和“返回”。當(dāng)接收用戶在菜單中的選項(xiàng)后,在屏幕的文本框控件中顯示選擇的內(nèi)容。項(xiàng)目名:Activity_OptionMenu5.1Menu子菜單(SubMenu)子菜單就是將相同功能的菜單項(xiàng)分組進(jìn)行多級顯示的一種菜單。SubMenu類位于android.view包下,它繼承自Menu。每個(gè)SubMenu對象代表一個(gè)子菜單。SubMenu通常與選項(xiàng)菜單聯(lián)合使用,往菜單中添加子菜單使用addSubMenu()方法。子菜單SubMenu常用的成員方法:方法名稱說明setHeaderIcon(icon/id)使用Drawable對象或id資源設(shè)置SubMenu的標(biāo)題圖標(biāo)。setIcon(icon/id)使用Drawable對象或id資源設(shè)置在父菜單中顯示的圖標(biāo)。setHeaderTitle(title/id)使用標(biāo)題文本對象或id資源設(shè)置SubMenu的標(biāo)題。setHeaderView(View)設(shè)置指定View對象作為子菜單的圖標(biāo)。5.1Menu實(shí)例:選項(xiàng)菜單與子菜單。設(shè)置選項(xiàng)菜單,其中有兩個(gè)菜單分別是:性別子菜單,愛好子菜單。當(dāng)接收用戶選擇了子菜單中的菜單項(xiàng)時(shí),在屏幕的文本編輯框控件中累計(jì)記錄所做的選擇的內(nèi)容。項(xiàng)目名:Activity_Menu5.1Menu實(shí)例:選項(xiàng)菜單與子菜單(項(xiàng)目:Activity_Menu)Java代碼:MenuActivity.java-1第六章菜單與對話框5.1Menu實(shí)例:選項(xiàng)菜單與子菜單(項(xiàng)目:Activity_Menu)Java代碼:MenuActivity.java-2……子菜單所在的組的id子菜單標(biāo)題顯示的文本內(nèi)容子菜單的順序子菜單的id菜單項(xiàng)所在組的id菜單項(xiàng)id菜單項(xiàng)的順序菜單項(xiàng)顯示的文本內(nèi)容5.1Menu上下文菜單(ContentMenu)ContentMenu位于android.view包下,繼承自Menu。ContentMenu注冊于某個(gè)View對象上,當(dāng)長按下該View對象時(shí),呼出上下文菜單。ContentMenu菜單項(xiàng)不支持快捷鍵,不附帶圖標(biāo)。ContentMenu標(biāo)題可以指定圖標(biāo)。常用方法方法名稱說明onCreateContextMenu()每次為View對象呼出上下文菜單時(shí)都調(diào)用。onContextItemSelected()當(dāng)用戶選擇了上下文菜單選項(xiàng)后調(diào)用。onContextMenuClosed()當(dāng)上下文菜單被關(guān)閉時(shí)調(diào)用。registerForContextMenu()為指定的View對象注冊一個(gè)上下文菜單。5.1Menu在程序中創(chuàng)建上下文菜單的步驟:第一步,重寫Activity的onCreateContextMenu()方法,調(diào)用Menu的add()方法添加菜單項(xiàng)MenuItem。第二步,重寫Activity的onContextItemSelected()方法,響應(yīng)菜單單擊事件。第三步,調(diào)用registerForContextMenu()方法,為視圖View對象注冊上下文菜單。5.1MenuAndroid對話框是用戶交互的主要應(yīng)用之一。對話框是一個(gè)顯示在當(dāng)前活動(dòng)界面前端的小窗口。對話框出現(xiàn)時(shí),當(dāng)前活動(dòng)失去焦點(diǎn),一切和用戶的交互通過對話框進(jìn)行。對話框通常用于提示消息和應(yīng)用的短活動(dòng)。5.2DialogAndroid系統(tǒng)主要提供四類對話框:提示對話框(AlertDialog)普通對話框列表對話框單選按鈕對話框復(fù)選框?qū)υ捒?。進(jìn)度對話框(ProgressDialog):繼承自AlertDialog。日期選擇對話框(DatePickerDialog)時(shí)間選擇對話框(TimePickerDialog)Android對話框都類位于android.app包下。5.2Dialog在Android中通過回調(diào)方法創(chuàng)建并處理對話框的事件。相關(guān)方法:方法名稱說明onCreateDialog()創(chuàng)建對話框,只在首次顯示對話框時(shí)調(diào)用。onPrepareDialog()每次顯示對話框前調(diào)用。showDialog()以傳入?yún)?shù)為id,顯示指定的對話框。removeDialog()以傳入?yún)?shù)為id,徹底釋放指定的對話框。5.2Dialog關(guān)閉對話框關(guān)閉對話框方法:對Activity調(diào)用dismissDialog()方法。對該對話框調(diào)用dismiss()方法。注:使用Dialog類的dismiss方法關(guān)閉對話框時(shí),對話框并沒徹底消失,而是在后臺保留其狀態(tài)。要徹底清除對話框,需要調(diào)用removeDialog()方法。5.2Dialog實(shí)例:Android對話框在一個(gè)Activity里,通過一組按鈕,分別打開幾種常見的對話框。項(xiàng)目名:Activity_Dialog所有按鈕、對話框中顯示的文字全部來自strings.xml和array.xml資源文件。5.2Dialog5.2Dialog自定義布局對話框
自定義對話框的布局需要先定義布局文件,然后使用LayoutInflater將布局文件轉(zhuǎn)換為視圖View,最后使用Dialog的setView方法將視圖設(shè)為對話框的內(nèi)容5.2Dialog publicvoidcreateLoginDialog(){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setTitle("用戶登錄"); builder.setIcon(android.R.drawable.ic_menu_myplaces); LayoutInflaterinflater=LayoutInflater.from(this); ViewloginView=inflater.inflate(R.layout.logindialoglayout,null); finalEditTextname; finalEditTextpwd; name=(EditText)loginView.findViewById(R.id.login_name); pwd=(EditText)loginView.findViewById(R.id.login_password); builder.setView(loginView); builder.setPositiveButton("登錄",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ Stringn=name.getText().toString(); Stringp=pwd.getText().toString(); Toast.makeText(DialogListActivity.this,"登錄信息:"+n+""+p,Toast.LENGTH_LONG).show(); }} ); builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ } }); builder.show();
}5.2DialogDialog樣式的Menu5.3通知使用對話框可以實(shí)現(xiàn)向用戶通知信息的目的,但對話框會打斷當(dāng)前操作,讓用戶轉(zhuǎn)到對話框界面。如果需要的只是提醒,或通知用戶某項(xiàng)工作已經(jīng)開始,Android還提供了另外兩種向用戶通知的方式:ToastNotificationAndroid系統(tǒng)提供一套友好的消息提示機(jī)制,不會打斷用戶當(dāng)前的操作。常用的方式Toast一種快速的即時(shí)消息。消息內(nèi)容簡短。懸浮于應(yīng)用程序的最上方。不獲得焦點(diǎn)。Notification消息內(nèi)容顯示于手機(jī)的狀態(tài)欄中。按住狀態(tài)欄往下拉,可以查看系統(tǒng)的提示消息。5.3通知Toast對象Toast類在android.widget包下。Toast對象的創(chuàng)建通過makeText()方法實(shí)現(xiàn)。Toast對象通過show()方法顯示在屏幕上。Toast對象一般用于某項(xiàng)操作執(zhí)行后是否成功的消息提示。實(shí)例:在ZSWB_Diary2中,添加Toast對象:當(dāng)刪除一條日志操作時(shí)給出提示。項(xiàng)目名為:ZSWB_Diary3。5.3通知?jiǎng)?chuàng)建Notification對象Notification類在android.app包下。Notification無須Activity,將消息內(nèi)容顯示在手機(jī)狀態(tài)條中。創(chuàng)建Notification對象:方法一:Notificationmynotification=newNotification(icon,ticker,when);其中:icon是顯示在狀態(tài)欄中的圖標(biāo),一般通過資源id表示。ticker是消息的文本內(nèi)容。when是系統(tǒng)時(shí)間,一般可用System.currentTimeMillis()獲得。方法二:Notificationmynotification=newNotification();mynotification.icon=R.drawable.header;mynotification.tickerText=getResources().getString(R.string.notification);…5.3通知Notification包含如下功能:創(chuàng)建新的狀態(tài)欄圖標(biāo);在擴(kuò)展的狀態(tài)條窗口顯示額外的信息(也可以啟動(dòng)另一個(gè)Intent);其它提示形式:閃爍/LED,讓手機(jī)震動(dòng),發(fā)出聲音(鈴聲,媒體庫歌曲)等。設(shè)置Notification對象缺省表現(xiàn)形式:Notification.DEFAULT_VIBRATE:Notification顯示時(shí)伴隨振動(dòng)。Notification.DEFAULT_SOUND:Notification顯示時(shí)伴隨音樂。Notification.DEFAULT_ALL:Notification顯示時(shí)伴隨振動(dòng)和音樂。例:mynotification.defaults=Notification.DEFAULT_SOUND;模擬器不支持震動(dòng)。5.3通知由Notification啟動(dòng)另一活動(dòng)設(shè)置點(diǎn)擊狀態(tài)欄中的Notification時(shí)發(fā)送的Intent對象。例如,當(dāng)點(diǎn)擊狀態(tài)欄的Notification時(shí)啟動(dòng)另一個(gè)活動(dòng),該活動(dòng)名為NotifiedActivity。代碼如下:Intenti=newIntent(this,NotifiedActivity.class);PendingIntentpi=PendingIntent.getActivity(this,0,i,0);PendingIntent:PendingIntent就是一個(gè)Intent的描述,相當(dāng)于對intent執(zhí)行了包裝,我們不一定一定要馬上執(zhí)行它,我們將其包裝后,傳遞給其他activity或application。點(diǎn)擊狀態(tài)欄中的Notification啟動(dòng)另一個(gè)活動(dòng)。代碼如下:myNotification.setLatestEventInfo(this,"示例","點(diǎn)擊查看",pi);setLatestEventInfo:設(shè)置顯示在拉伸狀態(tài)欄中的Notification對象的屬性,單擊后將發(fā)送PendingIntent對象。。5.3通知NotificationManager所有的Notification都由NotificationManager來管理,通過NotificationManager顯示出來。例:NotificationManagernotificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);notificationManager.notify(0,myNotification); //發(fā)送NotificationNotificationManager常用方法5.3通知方法描述cancel(intid)取消以前顯示的一個(gè)NotificationcancelAll()取消以前顯示的一個(gè)所有NotificationgetSystemService(NOTIFICATION_SERVICE)初始化一個(gè)NotificationManager對象notify(intid,Notificationnotification)把Notification持久地發(fā)送到狀態(tài)條上使用Notification和NotificationManager的基本步驟:⑴獲取NotificationManager對象。⑵創(chuàng)建一個(gè)Notification對象。⑶設(shè)置Notification的各個(gè)屬性:設(shè)置在狀態(tài)條(StatusBar)顯示的通知文本提示設(shè)置發(fā)出提示音設(shè)置手機(jī)振動(dòng)設(shè)置LED燈閃爍設(shè)置對通知的單擊事件處理⑷發(fā)送通知。5.3通知5.4ActionBarAndroid操作系統(tǒng)在3.0之后引入兩個(gè)比較重要的更新,一個(gè)是ActionBar,另一個(gè)是Fragment。ActionBarMenu與Title的融合!四個(gè)區(qū)域的應(yīng)用兩種導(dǎo)航方式5.4ActionBar5.4ActionBar使用android:showAsAction屬性never,該菜單項(xiàng)不顯示在ActionBar上。ifRoom,當(dāng)ActionBar上有足夠的空間時(shí),顯示該菜單項(xiàng)。always,一直顯示該菜單項(xiàng)。withText,菜單項(xiàng)的圖標(biāo)和文本信息都顯示在ActionBar上。(菜單項(xiàng)默認(rèn)只顯示圖標(biāo))collapseActionView,將ActionView折疊為普通的菜單項(xiàng)。5.4ActionBar<!--定義一個(gè)可單選的菜單項(xiàng)--><itemandroid:title="醫(yī)療服務(wù)"android:icon="@drawable/medical05"android:showAsAction="always|withText"><menu><groupandroid:checkableBehavior="single"><itemandroid:id="@+id/menu_item1"android:icon="@drawable/medical01"android:title="病例記錄"/><itemandroid:id="@+id/menu_item2"android:icon="@drawable/medical02"android:title="查詢藥物"/><itemandroid:id="@+id/menu_item3"android:icon="@drawable/medical04"android:title="預(yù)約檢測"/></group></menu></item> <item android:id="@+id/menu_item4" android:icon="@drawable/medical03" android:title="緊急呼救" android:showAsAction="ifRoom|withText" /></menu>5.4ActionBar啟用應(yīng)用程序圖標(biāo)ActionBar的第一個(gè)區(qū)域是應(yīng)用程序的圖標(biāo),默認(rèn)情況下,該圖標(biāo)不可以單擊,也就無法處理響應(yīng)功能。圖標(biāo)的ID默是android.R.id.home。actionBar.setDisplayHomeAsUpEnabled(true);啟用之后,該圖標(biāo)可以點(diǎn)擊5.4ActionBar標(biāo)簽導(dǎo)航ActionBar可以使用Tab在不同的fragment之間切換。Tab區(qū)域,與TabHost中的Tab不同F(xiàn)ragment區(qū)域使用ActionBar的Tab導(dǎo)航功能需要設(shè)置setNavigationMode(intmode),導(dǎo)航模式,其中參數(shù)mode的取值為:NAVIGATION_MODE_STANDARD,標(biāo)準(zhǔn)導(dǎo)航。NAVIGATION_MODE_LIST,下拉列表導(dǎo)航。NAVIGATION_MODE_TABS,標(biāo)簽導(dǎo)航。5.4ActionBar5.4ActionBar下拉導(dǎo)航//確定列表導(dǎo)航actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//新建列表適配器ArrayAdapteraa=newArrayAdapter(this,R.layout.listlayout, R.id.listlayout_text,newString[]{"時(shí)政要聞","科技資訊","體壇快報(bào)"});//設(shè)置列表導(dǎo)航的數(shù)據(jù)和監(jiān)聽器actionBar.setListNavigationCallbacks(aa,newMyNavigationListener());Fragment5.5FragmentFragment是什么?如何使用Fragment?如何管理Fragment?Fragment如何通訊?5.5FragmentFragment是Android3.0之后引入的系統(tǒng)組件,主要目的是在大屏幕設(shè)備(Android3.0之后支持平板),支持更加動(dòng)態(tài)和靈活的UI設(shè)計(jì)。較大的屏幕有更多的空間來放更多的UI組件,并且這些組件之間會產(chǎn)生更多的交互。5.5Fragment創(chuàng)建并使用Fragment,通常需要實(shí)現(xiàn)以下三個(gè)方法:onCreate,創(chuàng)建Fragment對象時(shí)調(diào)用,可以初始化Fragment中的控件,與Activity的onCreate方法類似。onCreateView,繪制用戶界面的方法,該方法必須返回要?jiǎng)?chuàng)建的Fragment視圖UI控件。如果不需要提供Fragment界面,則可以返回NULL。onPause,當(dāng)用戶離開這個(gè)Fragment的時(shí)候調(diào)用,在該方法中可以進(jìn)行數(shù)據(jù)的持久化處理。5.5FragmentFragment生命周期5.5FragmentonAttach(),當(dāng)Fragment被添加到Activity中時(shí)執(zhí)行,該方法只會執(zhí)行一次。onCreate(),F(xiàn)ragment創(chuàng)建時(shí)執(zhí)行,該方法只會執(zhí)行一次,類似于Activity的onCreate方法。onCreateView(),用于繪制Fragment的視圖界面,F(xiàn)ragment顯示的界面是該方法返回的View。onStart(),F(xiàn)ragment啟動(dòng)階段執(zhí)行。onResume(),onStart執(zhí)行后,立即執(zhí)行onResume,與Activity中的onResume類似。onPause(),F(xiàn)ragment失去焦點(diǎn)時(shí)執(zhí)行,與Activity中onPause類似。onStop(),F(xiàn)ragment不可見時(shí)執(zhí)行,與Activity中的onStop類似。onDestroyView(),銷毀Fragment所包含的View控件。onDestroy(),F(xiàn)ragment銷毀時(shí)執(zhí)行該方法,與Activity的onDestroy類似,只會執(zhí)行一次。onDetach(),F(xiàn)ragment從Act
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年適用商鋪?zhàn)赓U協(xié)議綜合模板版
- 2025公司企業(yè)經(jīng)營承包合同
- 通信設(shè)備采購審計(jì)關(guān)鍵
- 實(shí)習(xí)期間職責(zé)及保密協(xié)議
- 醫(yī)療機(jī)構(gòu)感染控制安全指南
- 火鍋店開荒保潔施工
- 倉儲物流平地機(jī)租賃協(xié)議
- 折彎設(shè)備租賃解除律師函
- 酒精飲料用電安全檢查規(guī)定
- 建筑通風(fēng)安防施工合同
- GB/T 12467.5-2009金屬材料熔焊質(zhì)量要求第5部分:滿足質(zhì)量要求應(yīng)依據(jù)的標(biāo)準(zhǔn)文件
- GB 17740-1999地震震級的規(guī)定
- 安全生產(chǎn)事故舉報(bào)獎(jiǎng)勵(lì)制度
- 冠心病健康教育完整版課件
- 永久避難硐室安裝施工組織措施
- 元旦節(jié)前安全教育培訓(xùn)-教學(xué)課件
- 國家開放大學(xué)《理工英語1》單元自測8試題答案
- 芯片工藝流程課件1
- 人教版八年級下冊生物期末測試卷帶答案
- 《尖利的物體會傷人》安全教育課件
- 大學(xué)生自主創(chuàng)業(yè)證明模板
評論
0/150
提交評論