Android應(yīng)用開(kāi)發(fā)入門(基于Android Studio開(kāi)發(fā)環(huán)境、任務(wù)驅(qū)動(dòng)式) 第2版 課件 4 任務(wù)四 我的日記的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
Android應(yīng)用開(kāi)發(fā)入門(基于Android Studio開(kāi)發(fā)環(huán)境、任務(wù)驅(qū)動(dòng)式) 第2版 課件 4 任務(wù)四 我的日記的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
Android應(yīng)用開(kāi)發(fā)入門(基于Android Studio開(kāi)發(fā)環(huán)境、任務(wù)驅(qū)動(dòng)式) 第2版 課件 4 任務(wù)四 我的日記的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
Android應(yīng)用開(kāi)發(fā)入門(基于Android Studio開(kāi)發(fā)環(huán)境、任務(wù)驅(qū)動(dòng)式) 第2版 課件 4 任務(wù)四 我的日記的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
Android應(yīng)用開(kāi)發(fā)入門(基于Android Studio開(kāi)發(fā)環(huán)境、任務(wù)驅(qū)動(dòng)式) 第2版 課件 4 任務(wù)四 我的日記的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

“我的日記”的設(shè)計(jì)與實(shí)現(xiàn)任務(wù)四重難點(diǎn)04030201Android的數(shù)據(jù)存儲(chǔ)SharedPreferencesActivity的生命周期

Activity之間的跳轉(zhuǎn)ProgressBar與線程知識(shí)目標(biāo)掌握Android的ProgressBar組件的屬性設(shè)定、使用方法;掌握Android的CheckBox組件的屬性設(shè)定、使用方法;掌握Android中線程的使用方法;掌握Activity的生命周期、各狀態(tài)的轉(zhuǎn)化關(guān)系與對(duì)應(yīng)的回調(diào)函數(shù);掌握Intent的作用、重要屬性、常見(jiàn)方法;理解SharedPreferences數(shù)據(jù)存儲(chǔ)的使用場(chǎng)合、使用方法;能力目標(biāo)能夠利用Handler與ProgressBar組件相結(jié)合演示進(jìn)度;能夠利用Intent的屬性與方法實(shí)現(xiàn)Activity的跳轉(zhuǎn);能夠利用SharedPreferences實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)。項(xiàng)目流程任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練本次任務(wù)“我的日記”中有兩個(gè)界面:登錄界面與“寫入日記”界面。在登錄界面中,需要用戶輸入正確的用戶名與密碼,同時(shí)用戶可以選擇“記住密碼”復(fù)選框,在單擊“登錄”按鈕之后,顯示大約5s的進(jìn)度條繼而跳轉(zhuǎn)至“寫入日記”界面。在“寫入日記”界面中,用戶可以在之前所寫日記的基礎(chǔ)上,寫入此次日記信息。日記文件將保存在手機(jī)的內(nèi)部存儲(chǔ)中,如果用戶單擊兩次【返回】鍵,即可退出“我的日記”應(yīng)用程序。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練進(jìn)行程序演示,請(qǐng)同學(xué)們觀察該應(yīng)用實(shí)現(xiàn)了哪些功能?該應(yīng)用含有哪些控件,需要哪些支撐知識(shí)?任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練TextViewEditTextCheckBoxButtonProgressBarEditTextButton任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練注意點(diǎn):運(yùn)用了ProgressBar、CheckBox等新控件;使用了線程、Activity跳轉(zhuǎn)、SharedPreferences數(shù)據(jù)存儲(chǔ)等知識(shí)點(diǎn)。項(xiàng)目流程任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練ProgressBar控件11.1簡(jiǎn)介ProgressBar為進(jìn)度條控件,通常是在用戶等待耗時(shí)任務(wù)執(zhí)行結(jié)果的情況下,作為一個(gè)反饋機(jī)制,來(lái)告知用戶目前任務(wù)的執(zhí)行進(jìn)度,避免用戶誤以為程序沒(méi)有響應(yīng),從而提高程序的用戶體驗(yàn)。ProgressBar控件1.2重要屬性屬性style作用設(shè)置ProgressBar進(jìn)度條的風(fēng)格

說(shuō)明style="?android:attr/progressBarStyleHorizontal"

:進(jìn)度條為水平進(jìn)度條style="?android:attr/progressBarStyleLarge"

:進(jìn)度條為大環(huán)形進(jìn)度條;style="?android:attr/progressBarStyleSmall":進(jìn)度條為小環(huán)形進(jìn)度條;屬性android:progress作用設(shè)置進(jìn)度條的進(jìn)度值,取值必須為介于0和最大值之間的整數(shù)說(shuō)明android:progress="0"屬性android:max作用設(shè)置進(jìn)度條進(jìn)度值的最大值。說(shuō)明android:progress=“100"1.2重要方法方法publicintgetProgress()作用獲得當(dāng)前進(jìn)度條的進(jìn)度值。示例intprogress=progressBar.getProgress();方法publicvoidsetProgress(intprogress)作用設(shè)定進(jìn)度條的當(dāng)前進(jìn)度

示例progressBar.setProgress(0);方法publicvoidsetMax(intmax)作用設(shè)定進(jìn)度條進(jìn)度的最大值示例progressBar.setMax(200);1.3示例演示演示ProgressBar的使用,具體如下:演示如何創(chuàng)建ProgressBar控件;演示如何利用ProgressBar控件的屬性與方法;放置一個(gè)水平的ProgressBar(max:10,progress:0)和一個(gè)Button;每次點(diǎn)擊Button,ProgressBar的進(jìn)度progress都增加1。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練線程Thread22.1簡(jiǎn)介所有界面組件相關(guān)的操作,實(shí)際上都由主UI線程(主用戶界面線程)在負(fù)責(zé)運(yùn)行。但有時(shí)候程序會(huì)執(zhí)行一些耗時(shí)的操作,一般的解決方案是將耗時(shí)的操作交給另外一個(gè)子線程來(lái)執(zhí)行,從而保證主UI線程的順暢。線程2.1簡(jiǎn)介子線程Thread負(fù)責(zé)耗時(shí)的操作主UI線程負(fù)責(zé)與用戶操作交互Handler發(fā)送消息Handler接收消息,更新UIMessageHandler發(fā)送消息MessageHandler接收消息,更新UIHandler發(fā)送消息MessageHandler接收消息,更新UI2.2重要方法方法Thread類:publicThread(Runnablerunnable)作用Thread類的構(gòu)造方法,用于創(chuàng)建子線程對(duì)象。說(shuō)明Threadt=newThread(newRunnable(){

publicvoidrun(){…}}方法Thread類:publicvoidstart()作用運(yùn)行線程說(shuō)明thread.start();方法Thread類:publicstaticvoidsleep(longtime)作用讓線程休眠說(shuō)明thread.sleep(1000);2.2重要方法方法Handler類:publicbooleansendMessage(Messagemsg)作用發(fā)送消息說(shuō)明handler.sendMessage(newMessage());方法Handler類:publicbooleansendEmptyMessage(intwhat)作用發(fā)送一條僅包含消息編號(hào)的空消息。如果需要一條只有編號(hào),不包含任何其它數(shù)據(jù)的空消息,可以調(diào)用此方法。說(shuō)明handler.sendEmptyMessage(1);方法Handler類:publicvoidhandleMessage(Messagemsg)作用處理消息,該方法在Handler對(duì)象收到消息時(shí)被回調(diào)。說(shuō)明msg為接收到的消息對(duì)象,通過(guò)判斷msg.what可以區(qū)分不同的消息類型。2.3示例演示演示線程的使用,具體如下:布局中從上到下依次放置一個(gè)水平的進(jìn)度條、一個(gè)環(huán)形的進(jìn)度條和一個(gè)TextView控件。水平滾動(dòng)條每1s前進(jìn)一格,即讓子線程每休眠1s后更新水平進(jìn)度條的進(jìn)度。當(dāng)進(jìn)度條的進(jìn)度達(dá)到最大值100%時(shí),TextView顯示“頁(yè)面加載完畢!”,兩個(gè)進(jìn)度條消失。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練Activity間的跳轉(zhuǎn)33.1簡(jiǎn)介Intent是兩個(gè)Activity之間進(jìn)行跳轉(zhuǎn)的媒介。Android中,當(dāng)一個(gè)Activity需要跳轉(zhuǎn)到另外一個(gè)Activity時(shí),就需要用到Intent了。Intent中文為“意圖”,意味著Android程序在進(jìn)行頁(yè)面跳轉(zhuǎn)時(shí),只需告知系統(tǒng)它的“意圖”:需要啟動(dòng)哪一個(gè)Activity。Intent簡(jiǎn)介3.2重要屬性-ActionAction常量對(duì)應(yīng)的字符串含義說(shuō)明ACTION_VIEWent.action.VIEW向用戶顯示數(shù)據(jù)ACTION_EDITent.action.EDIT向用戶提供編輯某個(gè)數(shù)據(jù)的途徑ACTION_DIALent.action.DIAL向用戶顯示一個(gè)電話撥號(hào)面板界面ACTION_MAINent.action.MAIN標(biāo)志著該Activity是某個(gè)Application應(yīng)用程序的入口點(diǎn)ACTION_ATTACH_DATAent.action.ATTACH_DATA指明附加信息給其他地方的一些數(shù)據(jù)ACTION_CALLent.action.CALL向用戶直接顯示打電話的界面3.2重要屬性-CategoryCategory常量對(duì)應(yīng)的字符串含義說(shuō)明CATEGORY_DEFAULTent.category.DEFAULTAndroid系統(tǒng)中默認(rèn)的分類CATEGORY_HOMEent.category.HOME設(shè)置該Activity為HomeActivityCATEGORY_PREFERENCEent.category.PREFERENCE設(shè)置該Activity為參數(shù)面板CATEGORY_LAUNCHERent.category.LAUNCHER設(shè)置該Activity為在當(dāng)前應(yīng)用程序啟動(dòng)器中優(yōu)先級(jí)最高的Activity,通常與ACTION_MAIN配合使用CATEGORY_BROWSABLEent.category.BROWSABLE設(shè)置該Activity能被瀏覽器啟動(dòng)CATEGORY_DEFAULTent.category.DEFAULTAndroid系統(tǒng)中默認(rèn)的分類CATEGORY_HOMEent.category.HOME設(shè)置該Activity為HomeActivity3.2重要屬性-DataData屬性是用來(lái)向Action屬性提供可操作的數(shù)據(jù)的

采用Uri對(duì)象的格式,即scheme://host:port/path。content://contacts/people/1ACTION_VIEWcontent://contacts/people/1:顯示id為1的聯(lián)系人信息;ACTION_DIALcontent://contacts/people/1:將id為1的聯(lián)系人電話號(hào)碼顯示在撥號(hào)界面中;ACITON_VIEWtel:123:顯示電話為123的聯(lián)系人信息;ACTION_VIEWhttp://:在瀏覽器中瀏覽谷歌網(wǎng)站。3.2重要屬性-TypeType屬性用于明確地指明Intent數(shù)據(jù)的具體類型(MIME類型)。盡管Intent的數(shù)據(jù)類型通常都能從數(shù)據(jù)本身進(jìn)行推斷,但是通過(guò)設(shè)置這個(gè)Type屬性,可以強(qiáng)制采用顯式指定的類型。3.2重要屬性-Component指定了Component屬性以后,Intent的其他所有屬性都是可選的。這種方式的優(yōu)點(diǎn)在于無(wú)需查找,直接調(diào)用目標(biāo)組件,速度快捷。3.2重要屬性-Extras

Extras屬性的值是一個(gè)Bundle對(duì)象。Bundle類與Map類很相似,它可以放入多對(duì)key-value鍵值,這樣在通過(guò)Intent對(duì)象進(jìn)行Activity跳轉(zhuǎn)時(shí),就能夠進(jìn)行數(shù)據(jù)的傳遞了。3.3重要方法方法Intent類:publicIntentsetAction(Stringaction)作用設(shè)置Action屬性說(shuō)明Intentintent=newIntent();

intent.setAction(Intent.ACTION_WEB_SEARCH);

方法Intent類:publicIntentsetData(Stringdata)作用設(shè)置Data屬性說(shuō)明intent.setData(Uri.parse(""));方法Intent類:publicIntentsetType(Stringtype)作用設(shè)置Type屬性說(shuō)明intent.setType(vnd.android.cursor.dir/contact);

3.3重要方法方法Intent類:publicIntentputExtras(Bundlebundle)作用設(shè)置Extra屬性說(shuō)明Bundlebundle=newBundle();bundle.putString(“KEY_HEIGHT”,”180”);bundle.putString(“KEY_WEIGHT”,”80”);intent.setExtra(bundle);

方法Intent類:publicIntentsetClass

(Context

packageContext,

Class<?>cls)作用明確intent跳轉(zhuǎn)時(shí)的源Activity和目標(biāo)Activity

說(shuō)明Intentintent=newIntent();

intent.setClass(context,targetActivity.class);3.3重要方法方法Intent類:publicIntentsetClassName(ContextpackageContext,

StringclassName)作用明確intent跳轉(zhuǎn)時(shí)的源Activity和目標(biāo)Activity

說(shuō)明intent.setClassName(MainActivity.this,"ent.SecondActivity");方法Context類:voidstartActivity(Intentintent)作用根據(jù)intent啟動(dòng)某個(gè)Activity

說(shuō)明Intentintent=newIntent();

intent.setClass(context,targetActivity.class);startActivity(intent);3.4示例演示演示Activity的跳轉(zhuǎn),具體如下:列舉一些常見(jiàn)的Activity跳轉(zhuǎn)案例,比如返回桌面、瀏覽網(wǎng)址、發(fā)送短信、撥打電話等;演示Intent的使用方法;演示新建Activity的流程。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練Activity生命周期44.1簡(jiǎn)介活動(dòng)狀態(tài):處于Activity棧的棧頂,用戶啟動(dòng)應(yīng)用程序或Activity之后,該Activity位于屏幕前臺(tái),用戶可見(jiàn),能獲得焦點(diǎn)(即用戶可以操作它)。同一時(shí)刻只會(huì)有一個(gè)Activity處于活動(dòng)狀態(tài);暫停狀態(tài):該Activity位于前臺(tái),但是被另外一個(gè)處于“活動(dòng)”狀態(tài)的Activity(比如對(duì)話框風(fēng)格的Activity)遮擋住一部分,沒(méi)有焦點(diǎn),用戶不能直接對(duì)其進(jìn)行輸入操作,但界面依舊可見(jiàn),該Activity的狀態(tài)處于“暫?!睜顟B(tài)。停止?fàn)顟B(tài):該Activity被其他Activity完全擋住,不再可見(jiàn),也失去了焦點(diǎn);銷毀狀態(tài):該Activity被終止。Activity生命周期狀態(tài)4.2生命周期回調(diào)函數(shù)啟動(dòng)ActivityActivity停止?fàn)顟B(tài)Activity銷毀狀態(tài)Activity暫停狀態(tài)Activity運(yùn)行狀態(tài)onCreate()onStart()onPause()onResume()onStop()onDestroy()onRestart()另一個(gè)Activity來(lái)到前臺(tái)該Activity重返前臺(tái)該Activity不可見(jiàn)該Activity重返前臺(tái)4.3示例方法演示Activity生命周期回調(diào)方法的調(diào)用時(shí)機(jī),具體如下:重寫Activity的生命周期函數(shù),利用log輸出日志信息。觀察輸出的日志信息,準(zhǔn)確理解生命周期回調(diào)方法的調(diào)用時(shí)機(jī)與先后順序。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練CheckBox控件55.1簡(jiǎn)介

CheckBox控件用來(lái)實(shí)現(xiàn)復(fù)選功能,也就是一次可以選中多個(gè)選項(xiàng),比如在選擇愛(ài)好時(shí)我們可以使用CheckBox。這個(gè)類繼承了Button類,因此可以直接使用Button類支持的各種屬性和方法。CheckBox控件5.2重要屬性屬性android:checked作用用于指定CheckBox的初始選中狀態(tài)說(shuō)明android:checked=“true”屬性android:text作用設(shè)置復(fù)選框的標(biāo)題說(shuō)明android:text=“打籃球”5.3重要方法方法publicbooleanisChecked()作用判斷復(fù)選框的選中狀態(tài)。。說(shuō)明返回值:布爾類型,true表示狀態(tài)為選中,false表示狀態(tài)為未選中。5.4重要監(jiān)聽(tīng)器方法publicvoidsetOnCheckedChangeListener(CompoundButton.OnCheckedChangeListenerl)作用為復(fù)選框設(shè)置狀態(tài)改變監(jiān)聽(tīng)器說(shuō)明參數(shù)說(shuō)明:監(jiān)聽(tīng)器是一個(gè)實(shí)現(xiàn)了CompoundButton.OnCheckedChangeListener接口的類的對(duì)象。方法publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked)作用當(dāng)復(fù)選框狀態(tài)改變時(shí)觸發(fā)說(shuō)明參數(shù)說(shuō)明:buttonView是狀態(tài)發(fā)生改變的CheckBox,isChecked為true,表示狀態(tài)變?yōu)檫x中狀態(tài),否則表示狀態(tài)變?yōu)槲催x中5.5示例演示演示CheckBox控件的使用,具體如下:在界面上放置一個(gè)CheckBox控件和一個(gè)Button按鈕;點(diǎn)擊按鈕能夠Toast提示CheckBox當(dāng)前的選中狀態(tài);當(dāng)用戶改變CheckBox的狀態(tài)時(shí),用Toast加以提示。任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練SharedPreferences66.1簡(jiǎn)介

SharedPreferencesSharedPreferences為我們提供方便的、輕量級(jí)的數(shù)據(jù)存儲(chǔ);通常是用作應(yīng)用程序中的參數(shù)配置或是一些屬性的存儲(chǔ)設(shè)置。例如我們可以通過(guò)它來(lái)保存用戶上一次保存的信息或所做的修改,下一次應(yīng)用程序啟動(dòng)后,就會(huì)為用戶加載上一次保存的信息,可以減少用戶重復(fù)設(shè)置、輸入等麻煩,方便應(yīng)用。SharedPreferences所存儲(chǔ)的數(shù)據(jù)是以“鍵-值”的格式保存在xml文件中。該xml文件將存在于工程中的/data/data/包名/shared_prefs目錄下。6.2重要方法方法Context類:publicabstractSharedPreferencesgetSharedPreferences(String

name,intmode)作用獲得xml文件對(duì)象的引用說(shuō)明name為xml文件名;mode為讀寫模式,取值如下:Context.MODE_PRIVATE:只能被本應(yīng)用程序訪問(wèn);Context.MODE_WORLD_READABLE:其他應(yīng)用可讀Context.MODE_WORLD_WRITEABLE:其他應(yīng)用可寫方法SharedPreferences類:publicXXXgetXXX(String

key,XXXdefValue)作用獲得SharedPreferences中指定“鍵”所對(duì)應(yīng)的“值”說(shuō)明Key為鍵名,defValue為文件中沒(méi)有這樣的key時(shí)返回的默認(rèn)值。6.2重要方法方法SharedPreferences類:publicEditoredit()作用獲得SharedPreferences所對(duì)應(yīng)的Editor編輯器對(duì)象。說(shuō)明返回值為Editor編輯器對(duì)象方法Editor類:publicEditorputXXX(Stringkey,XXXvalue)作用向SharedPreferences中寫入“鍵”所對(duì)應(yīng)的“值”。說(shuō)明key為鍵名,value為鍵對(duì)應(yīng)的值。6.2重要方法方法Editor類:publicEditorremove(Stringkey)作用在SharedPreferences中刪除“鍵”key所對(duì)應(yīng)的“值”

。說(shuō)明key為鍵名方法Editor類:publicEditorclear()作用向SharedPreferences中清空所有的“鍵-值”對(duì)。說(shuō)明方法Editor類:publicbooleancommit()作用提交Editor編輯器中所修改的內(nèi)容。說(shuō)明6.3讀和寫

寫信息打開(kāi)文件getSharedPreferences()獲取編輯器Editoredit()使用Editor存入各種信息putXXX結(jié)束提交commit讀信息打開(kāi)文件getSharedPreferences讀取信息getXXX結(jié)束6.3示例演示演示如何利用SharedPreferences保存登錄界面中的密碼,圖示如下:D登錄6.3示例演示SharedPreferences中需要保存的數(shù)據(jù)如下:Key類型含義REMBERPWDBooleanTrue為記住密碼,F(xiàn)alse為不需要記住密碼USERNAMEString用戶名PWDString密碼6.3示例演示SharedPreferences中需要保存的數(shù)據(jù)如下:點(diǎn)擊【登錄】按鈕,判斷是否勾選了【記住密碼】:勾選:設(shè)定REMBERPWD的值為True,并設(shè)定USERNAME和PWD的值未勾選:設(shè)定REMBERPWD的值為False,并清除USERNAME和PWDonCreate方法,讀取REMBERPWD的值,判斷該值:True:讀取USERNAME和PWD,并顯示到EditText中,勾選了【記住密碼】False:啥都不干任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練文件存儲(chǔ)77.1簡(jiǎn)介

由于SharedPreferences可以快速的實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)Android文件存儲(chǔ)與Java文件存儲(chǔ)類似,不進(jìn)行詳細(xì)介紹。項(xiàng)目流程任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練總體分析1

1.1任務(wù)分析

該應(yīng)用主要有兩個(gè)界面,如下圖所示:TextViewEditTextCheckBoxButtonProgressBarEditTextButton1.2處理流程

程序啟動(dòng),載入“登錄”界面輸入用戶名/密碼單擊“登錄”按鈕從手機(jī)內(nèi)存中讀取“MyDiary.txt”文件,將內(nèi)容顯示跳至“寫入日記”界面從SharedPreferences讀取密碼密碼保存至SharedPreferences修改內(nèi)容,單擊“保存”按鈕程序退出記住密碼?記住密碼?N用戶名/密碼正確?單擊【返回】?jī)纱危縔YYYNNN任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練界面布局2 2.1創(chuàng)建項(xiàng)目

演示創(chuàng)建項(xiàng)目:創(chuàng)建一個(gè)Android應(yīng)用程序項(xiàng)目,取名為MyDiary;將默認(rèn)的Activity名稱MainActivity.java重命名為L(zhǎng)oginActivity.java,其對(duì)應(yīng)的XML布局文件為res\layout\activity_login.xml;新建一個(gè)Activity名稱為DiaryActivity.java,其對(duì)應(yīng)的XML布局文件為res\layout\activity_diary.xml2.2創(chuàng)建字符串資源

演示創(chuàng)建字符串資源,在res/values/strings.xml中添加字符串資源:

<stringname="hint_username">用戶名</string>

<stringname="hint_pwd">密碼</string>

<stringname="remember_pwd">記住密碼</string>

<stringname="btn_login">登錄</string>

<stringname="btn_save">保存</string>

<stringname="view_mydiary">我的日記</string>

<stringname="hint_mydiary">請(qǐng)?jiān)谶@兒寫下你的心情日記</string>2.3創(chuàng)建組件樣式

演示如何創(chuàng)建<shape>資源:<?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="/apk/res/android"><!--黑色邊框,寬度為2dp--><strokeandroid:width="2dp"android:color="#000"/><!--背景色為黃金色--><solidandroid:color="#fbe6c9"/></shape>2.4登錄界面布局

登錄界面布局如右圖所示,可以使用約束布局實(shí)現(xiàn)。放置組件后,按教材設(shè)置相關(guān)的屬性。ConstraintLayout“我的日記”Textview用戶名/密碼EditText記住密碼CheckBox登錄Button進(jìn)度條ProgressBar2.5“寫入日記”界面布局

“寫入日記”界面布局如右圖所示,整體布局可以使用約束布局實(shí)現(xiàn)。放置控件,然后按教材設(shè)置相關(guān)的屬性即可。利用<shape>資源設(shè)置“寫日記”的EditText控件的邊框與背景色。ConstraintLayout“寫日記”的EditText“保存”按鈕任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練功能實(shí)施-登陸界面3

3.1登錄界面功能實(shí)現(xiàn)-成員變量

在LoginActivity.java類中申明成員變量,包括控件相關(guān)的對(duì)象、處理消息的Handler對(duì)象。EditTextusernameEdit;//用戶名輸入框EditTextpwdEdit;//密碼輸入框CheckBoxrememberPwdCheck;//記住密碼的復(fù)選框ButtonloginBtn;//登錄按鈕ProgressBarprogressBar;//進(jìn)度條Handlerhandler;//線程的手柄staticfinalintSTOP=0x111;//進(jìn)度完成的標(biāo)志3.2登錄界面功能實(shí)現(xiàn)-程序框架

在onCreate方法中依次調(diào)用了initViews()、initHandler()、setListeners()方法。protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); /*初始化控件變量*/ initViews(); /*設(shè)定組件的監(jiān)聽(tīng)器*/

setListeners(); /*初始化線程的句柄*/ initHandler();}3.3onCreate初始化

開(kāi)始initViews獲取組件結(jié)束setListeners設(shè)定監(jiān)聽(tīng)器initHandler初始化句柄各種findViewById從SharedPreferences中讀取以下配置數(shù)據(jù)記住密碼從SharedPreferences中讀取用戶名和密碼配置數(shù)據(jù):是否記住密碼?NY結(jié)束開(kāi)始輸入框顯示用戶名和密碼勾選CheckBox3.4點(diǎn)擊登錄按鈕N開(kāi)始判斷用戶名和密碼是否均為”admin”Toast提示用戶名和密碼錯(cuò)誤Y判斷是否要記住密碼存儲(chǔ)SharedPreference記住密碼:true用戶名:輸入框的內(nèi)容密碼:輸入框的內(nèi)容存儲(chǔ)SharedPreference記住密碼:false用戶名:””密碼:””Y結(jié)束N輸入框和按鈕禁用顯示進(jìn)度條開(kāi)啟子線程3.4點(diǎn)擊登錄按鈕子線程Thread負(fù)責(zé)耗時(shí)的操作主UI線程負(fù)責(zé)與用戶操作交互Sleep5000msHandler發(fā)送消息MessageHandler接收消息跳轉(zhuǎn)到日記界面Finish登錄界面任務(wù)簡(jiǎn)介任務(wù)分析支撐知識(shí)任務(wù)實(shí)施任務(wù)小結(jié)擴(kuò)展訓(xùn)練功能實(shí)施-寫入日記4 4.1“寫入日記”界面與功能實(shí)現(xiàn)-成員變量

在DiaryActivit

溫馨提示

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

評(píng)論

0/150

提交評(píng)論