![第5章 使用系統(tǒng)組件_第1頁](http://file4.renrendoc.com/view/94a33722535d50de8ccf8505b9c7fc78/94a33722535d50de8ccf8505b9c7fc781.gif)
![第5章 使用系統(tǒng)組件_第2頁](http://file4.renrendoc.com/view/94a33722535d50de8ccf8505b9c7fc78/94a33722535d50de8ccf8505b9c7fc782.gif)
![第5章 使用系統(tǒng)組件_第3頁](http://file4.renrendoc.com/view/94a33722535d50de8ccf8505b9c7fc78/94a33722535d50de8ccf8505b9c7fc783.gif)
![第5章 使用系統(tǒng)組件_第4頁](http://file4.renrendoc.com/view/94a33722535d50de8ccf8505b9c7fc78/94a33722535d50de8ccf8505b9c7fc784.gif)
![第5章 使用系統(tǒng)組件_第5頁](http://file4.renrendoc.com/view/94a33722535d50de8ccf8505b9c7fc78/94a33722535d50de8ccf8505b9c7fc785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章使用系統(tǒng)組件Android移動應用程序開發(fā)教程第5章使用系統(tǒng)組件Menu(菜單)1Dialog(對話框)2通知3ActionBar4Fragment55.1MenuAndroid平臺下有三類菜單:選項菜單(OptionMenu)上下文菜單(ContentMenu)子菜單(Submenu)在Android中通過回調(diào)方法創(chuàng)建菜單并處理菜單按下的事件。5.1Menu選項菜單(OptionMenu)選項菜單服務于Activity。當按下手機的Menu鍵,在屏幕底端彈出選項菜單。選項菜單最多顯示6個,當菜單選項多于6個時將只顯示前5個菜單,最后的菜單項為一個擴展菜單選項。單擊擴展菜單選項,將彈出其余的菜單項。擴展菜單項不能顯示圖標。5.1Menu選項菜單(OptionMenu)選項菜單OptionMenu定義在android.view.Menu包中。一個選項菜單是一個Menu對象,在Menu對象中可以添加菜單項MenuItem。選項菜單的功能需要開發(fā)人員編程來實現(xiàn)。開發(fā)選項菜單主要用到的類:Menu、MenuItem、SubMenu。選項菜單常用的回調(diào)方法:方法名稱說明onCreateOptionsMenu()初始化選項菜單,只在首次顯示菜單時調(diào)用。onOptionsItemSelected()當某菜單項被選中時調(diào)用,默認返回false。onOptionsMenuClosed()當選項菜單關(guān)閉、或按下返回鍵、或選擇了某菜單項時調(diào)用。onPrepareOptionsMenu()為程序準備選項菜單,每次選項菜單顯示前調(diào)用。5.1MenuMenu類Menu類對象是一個菜單,它包含一個或多個菜單項MenuItem,也可以包含子菜單SubMenu。Menu的常用方法:方法名稱說明add()向Menu添加一個菜單項,返回MenuItem對象。addSubMenu()向Menu添加一個子菜單,返回SubMenu對象。finditem()返回指定id的MenuItem對象。size()返回Menu中菜單項的個數(shù)。5.1Menu菜單項MenuItem常用的成員方法:方法名稱說明setAlphabeticShortcut()設(shè)置MenuItem的字母快捷鍵。setNumericShortcut()設(shè)置MenuItem的數(shù)字快捷鍵。setIcon()設(shè)置MenuItem的圖標。setIntent()為MenuItem綁定Intent對象,當被選中時調(diào)用startActivity方法處理動作相應的Intent。setOnMenuItemClickListener()為MenuItem設(shè)置自定義監(jiān)聽器。一般情況下,使用回調(diào)方法onOptionsItemSelected效率更高。5.1Menu設(shè)計一個選項菜單時要為用戶提供交互接口,以響應菜單項被單擊的事件。創(chuàng)建選項菜單需要如下步驟:第一步,重寫Activity的onCreateOptionsMenu(Menumenu)方法,當我們第一次打開菜單時該方法被自動調(diào)用。第二步,調(diào)用Menu的add()方法添加菜單項MenuItem,此時,可以調(diào)用MenuItem的setIcon()方法來為菜單項設(shè)置圖標。第三步,定義菜單項被選擇之后的回調(diào)事件。有兩種方法:其一,重寫Activity的onOptionsItemSelected()方法,當菜單項MenuItem被選擇時,該方法用于響應事件;其二,為每個菜單項MenuItem對象添加OnMenuItemClickListener監(jiān)聽器,在其中定義處理菜單選項中的事件。5.1Menu實例:Android選項菜單設(shè)置選項菜單,其中有兩個菜單項:“開始”和“返回”。當接收用戶在菜單中的選項后,在屏幕的文本框控件中顯示選擇的內(nèi)容。項目名:Activity_OptionMenu5.1Menu子菜單(SubMenu)子菜單就是將相同功能的菜單項分組進行多級顯示的一種菜單。SubMenu類位于android.view包下,它繼承自Menu。每個SubMenu對象代表一個子菜單。SubMenu通常與選項菜單聯(lián)合使用,往菜單中添加子菜單使用addSubMenu()方法。子菜單SubMenu常用的成員方法:方法名稱說明setHeaderIcon(icon/id)使用Drawable對象或id資源設(shè)置SubMenu的標題圖標。setIcon(icon/id)使用Drawable對象或id資源設(shè)置在父菜單中顯示的圖標。setHeaderTitle(title/id)使用標題文本對象或id資源設(shè)置SubMenu的標題。setHeaderView(View)設(shè)置指定View對象作為子菜單的圖標。5.1Menu實例:選項菜單與子菜單。設(shè)置選項菜單,其中有兩個菜單分別是:性別子菜單,愛好子菜單。當接收用戶選擇了子菜單中的菜單項時,在屏幕的文本編輯框控件中累計記錄所做的選擇的內(nèi)容。項目名:Activity_Menu5.1Menu實例:選項菜單與子菜單(項目:Activity_Menu)Java代碼:MenuActivity.java-1第六章菜單與對話框5.1Menu實例:選項菜單與子菜單(項目:Activity_Menu)Java代碼:MenuActivity.java-2……子菜單所在的組的id子菜單標題顯示的文本內(nèi)容子菜單的順序子菜單的id菜單項所在組的id菜單項id菜單項的順序菜單項顯示的文本內(nèi)容5.1Menu上下文菜單(ContentMenu)ContentMenu位于android.view包下,繼承自Menu。ContentMenu注冊于某個View對象上,當長按下該View對象時,呼出上下文菜單。ContentMenu菜單項不支持快捷鍵,不附帶圖標。ContentMenu標題可以指定圖標。常用方法方法名稱說明onCreateContextMenu()每次為View對象呼出上下文菜單時都調(diào)用。onContextItemSelected()當用戶選擇了上下文菜單選項后調(diào)用。onContextMenuClosed()當上下文菜單被關(guān)閉時調(diào)用。registerForContextMenu()為指定的View對象注冊一個上下文菜單。5.1Menu在程序中創(chuàng)建上下文菜單的步驟:第一步,重寫Activity的onCreateContextMenu()方法,調(diào)用Menu的add()方法添加菜單項MenuItem。第二步,重寫Activity的onContextItemSelected()方法,響應菜單單擊事件。第三步,調(diào)用registerForContextMenu()方法,為視圖View對象注冊上下文菜單。5.1MenuAndroid對話框是用戶交互的主要應用之一。對話框是一個顯示在當前活動界面前端的小窗口。對話框出現(xiàn)時,當前活動失去焦點,一切和用戶的交互通過對話框進行。對話框通常用于提示消息和應用的短活動。5.2DialogAndroid系統(tǒng)主要提供四類對話框:提示對話框(AlertDialog)普通對話框列表對話框單選按鈕對話框復選框?qū)υ捒?。進度對話框(ProgressDialog):繼承自AlertDialog。日期選擇對話框(DatePickerDialog)時間選擇對話框(TimePickerDialog)Android對話框都類位于android.app包下。5.2Dialog在Android中通過回調(diào)方法創(chuàng)建并處理對話框的事件。相關(guān)方法:方法名稱說明onCreateDialog()創(chuàng)建對話框,只在首次顯示對話框時調(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)閉對話框時,對話框并沒徹底消失,而是在后臺保留其狀態(tài)。要徹底清除對話框,需要調(diào)用removeDialog()方法。5.2Dialog實例:Android對話框在一個Activity里,通過一組按鈕,分別打開幾種常見的對話框。項目名: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通知使用對話框可以實現(xiàn)向用戶通知信息的目的,但對話框會打斷當前操作,讓用戶轉(zhuǎn)到對話框界面。如果需要的只是提醒,或通知用戶某項工作已經(jīng)開始,Android還提供了另外兩種向用戶通知的方式:ToastNotificationAndroid系統(tǒng)提供一套友好的消息提示機制,不會打斷用戶當前的操作。常用的方式Toast一種快速的即時消息。消息內(nèi)容簡短。懸浮于應用程序的最上方。不獲得焦點。Notification消息內(nèi)容顯示于手機的狀態(tài)欄中。按住狀態(tài)欄往下拉,可以查看系統(tǒng)的提示消息。5.3通知Toast對象Toast類在android.widget包下。Toast對象的創(chuàng)建通過makeText()方法實現(xiàn)。Toast對象通過show()方法顯示在屏幕上。Toast對象一般用于某項操作執(zhí)行后是否成功的消息提示。實例:在ZSWB_Diary2中,添加Toast對象:當刪除一條日志操作時給出提示。項目名為:ZSWB_Diary3。5.3通知創(chuàng)建Notification對象Notification類在android.app包下。Notification無須Activity,將消息內(nèi)容顯示在手機狀態(tài)條中。創(chuàng)建Notification對象:方法一:Notificationmynotification=newNotification(icon,ticker,when);其中:icon是顯示在狀態(tài)欄中的圖標,一般通過資源id表示。ticker是消息的文本內(nèi)容。when是系統(tǒng)時間,一般可用System.currentTimeMillis()獲得。方法二:Notificationmynotification=newNotification();mynotification.icon=R.drawable.header;mynotification.tickerText=getResources().getString(R.string.notification);…5.3通知Notification包含如下功能:創(chuàng)建新的狀態(tài)欄圖標;在擴展的狀態(tài)條窗口顯示額外的信息(也可以啟動另一個Intent);其它提示形式:閃爍/LED,讓手機震動,發(fā)出聲音(鈴聲,媒體庫歌曲)等。設(shè)置Notification對象缺省表現(xiàn)形式:Notification.DEFAULT_VIBRATE:Notification顯示時伴隨振動。Notification.DEFAULT_SOUND:Notification顯示時伴隨音樂。Notification.DEFAULT_ALL:Notification顯示時伴隨振動和音樂。例:mynotification.defaults=Notification.DEFAULT_SOUND;模擬器不支持震動。5.3通知由Notification啟動另一活動設(shè)置點擊狀態(tài)欄中的Notification時發(fā)送的Intent對象。例如,當點擊狀態(tài)欄的Notification時啟動另一個活動,該活動名為NotifiedActivity。代碼如下:Intenti=newIntent(this,NotifiedActivity.class);PendingIntentpi=PendingIntent.getActivity(this,0,i,0);PendingIntent:PendingIntent就是一個Intent的描述,相當于對intent執(zhí)行了包裝,我們不一定一定要馬上執(zhí)行它,我們將其包裝后,傳遞給其他activity或application。點擊狀態(tài)欄中的Notification啟動另一個活動。代碼如下:myNotification.setLatestEventInfo(this,"示例","點擊查看",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)取消以前顯示的一個NotificationcancelAll()取消以前顯示的一個所有NotificationgetSystemService(NOTIFICATION_SERVICE)初始化一個NotificationManager對象notify(intid,Notificationnotification)把Notification持久地發(fā)送到狀態(tài)條上使用Notification和NotificationManager的基本步驟:⑴獲取NotificationManager對象。⑵創(chuàng)建一個Notification對象。⑶設(shè)置Notification的各個屬性:設(shè)置在狀態(tài)條(StatusBar)顯示的通知文本提示設(shè)置發(fā)出提示音設(shè)置手機振動設(shè)置LED燈閃爍設(shè)置對通知的單擊事件處理⑷發(fā)送通知。5.3通知5.4ActionBarAndroid操作系統(tǒng)在3.0之后引入兩個比較重要的更新,一個是ActionBar,另一個是Fragment。ActionBarMenu與Title的融合!四個區(qū)域的應用兩種導航方式5.4ActionBar5.4ActionBar使用android:showAsAction屬性never,該菜單項不顯示在ActionBar上。ifRoom,當ActionBar上有足夠的空間時,顯示該菜單項。always,一直顯示該菜單項。withText,菜單項的圖標和文本信息都顯示在ActionBar上。(菜單項默認只顯示圖標)collapseActionView,將ActionView折疊為普通的菜單項。5.4ActionBar<!--定義一個可單選的菜單項--><itemandroid:title="醫(yī)療服務"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="預約檢測"/></group></menu></item> <item android:id="@+id/menu_item4" android:icon="@drawable/medical03" android:title="緊急呼救" android:showAsAction="ifRoom|withText" /></menu>5.4ActionBar啟用應用程序圖標ActionBar的第一個區(qū)域是應用程序的圖標,默認情況下,該圖標不可以單擊,也就無法處理響應功能。圖標的ID默是android.R.id.home。actionBar.setDisplayHomeAsUpEnabled(true);啟用之后,該圖標可以點擊5.4ActionBar標簽導航ActionBar可以使用Tab在不同的fragment之間切換。Tab區(qū)域,與TabHost中的Tab不同F(xiàn)ragment區(qū)域使用ActionBar的Tab導航功能需要設(shè)置setNavigationMode(intmode),導航模式,其中參數(shù)mode的取值為:NAVIGATION_MODE_STANDARD,標準導航。NAVIGATION_MODE_LIST,下拉列表導航。NAVIGATION_MODE_TABS,標簽導航。5.4ActionBar5.4ActionBar下拉導航//確定列表導航actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//新建列表適配器ArrayAdapteraa=newArrayAdapter(this,R.layout.listlayout, R.id.listlayout_text,newString[]{"時政要聞","科技資訊","體壇快報"});//設(shè)置列表導航的數(shù)據(jù)和監(jiān)聽器actionBar.setListNavigationCallbacks(aa,newMyNavigationListener());Fragment5.5FragmentFragment是什么?如何使用Fragment?如何管理Fragment?Fragment如何通訊?5.5FragmentFragment是Android3.0之后引入的系統(tǒng)組件,主要目的是在大屏幕設(shè)備(Android3.0之后支持平板),支持更加動態(tài)和靈活的UI設(shè)計。較大的屏幕有更多的空間來放更多的UI組件,并且這些組件之間會產(chǎn)生更多的交互。5.5Fragment創(chuàng)建并使用Fragment,通常需要實現(xiàn)以下三個方法:onCreate,創(chuàng)建Fragment對象時調(diào)用,可以初始化Fragment中的控件,與Activity的onCreate方法類似。onCreateView,繪制用戶界面的方法,該方法必須返回要創(chuàng)建的Fragment視圖UI控件。如果不需要提供Fragment界面,則可以返回NULL。onPause,當用戶離開這個Fragment的時候調(diào)用,在該方法中可以進行數(shù)據(jù)的持久化處理。5.5FragmentFragment生命周期5.5FragmentonAttach(),當Fragment被添加到Activity中時執(zhí)行,該方法只會執(zhí)行一次。onCreate(),F(xiàn)ragment創(chuàng)建時執(zhí)行,該方法只會執(zhí)行一次,類似于Activity的onCreate方法。onCreateView(),用于繪制Fragment的視圖界面,F(xiàn)ragment顯示的界面是該方法返回的View。onStart(),F(xiàn)ragment啟動階段執(zhí)行。onResume(),onStart執(zhí)行后,立即執(zhí)行onResume,與Activity中的onResume類似。onPause(),F(xiàn)ragment失去焦點時執(zhí)行,與Activity中onPause類似。onStop(),F(xiàn)ragment不可見時執(zhí)行,與Activity中的onStop類似。onDestroyView(),銷毀Fragment所包含的View控件。onDestroy(),F(xiàn)ragment銷毀時執(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美發(fā)店員工合同范本(7篇)
- 2024-2025學年第2課諸侯紛爭與變法運動-勤徑學升高中歷史必修上同步練測(統(tǒng)編版2019)
- 2025年企業(yè)市場營銷合作伙伴協(xié)議
- 2025年酒店客房用品訂購合同模板
- 2025年不動產(chǎn)權(quán)益讓與擔保協(xié)議版
- 2025年電動車維修服務合同示范
- 2025年水文測量儀器項目立項申請報告模范
- 2025年企業(yè)銷售專員合同格式
- 2025年戀愛雙方保密協(xié)議策劃模板
- 2025年度股權(quán)變更持有人協(xié)議
- 沈陽市第一屆“舒心傳技 莘紳向陽”職業(yè)技能大賽技術(shù)工作文件-27-全媒體運營師
- 2025年《贏在執(zhí)行》心得體會(4篇)
- 2025年華潤燃氣投資中國有限公司招聘筆試參考題庫含答案解析
- 2025年多彩貴州航空有限公司招聘筆試參考題庫含答案解析
- 安全生產(chǎn)網(wǎng)格員培訓
- 2025年江蘇泰州市住房和城鄉(xiāng)建設(shè)局下屬事業(yè)單位公開招聘工作人員歷年高頻重點提升(共500題)附帶答案詳解
- 深圳建筑工程公司財務管理制度
- 小紅書搜索推廣營銷師認證考試題(附答案)
- 符合TSG07-2019 B級鍋爐制造質(zhì)量手冊首版
- 統(tǒng)編版語文三年級下冊第三單元綜合性學習中華傳統(tǒng)節(jié)日 活動設(shè)計
- 降低順產(chǎn)產(chǎn)婦產(chǎn)后2小時失血率PDCA成果匯報書
評論
0/150
提交評論