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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

說明style="?android:attr/progressBarStyleHorizontal"

:進度條為水平進度條style="?android:attr/progressBarStyleLarge"

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

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

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

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

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

intent.setAction(Intent.ACTION_WEB_SEARCH);

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

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

方法Intent類:publicIntentsetClass

(Context

packageContext,

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

說明Intentintent=newIntent();

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

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

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

說明Intentintent=newIntent();

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

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

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

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

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

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

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

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

1.1任務分析

該應用主要有兩個界面,如下圖所示:TextViewEditTextCheckBoxButtonProgressBarEditTextButton1.2處理流程

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

演示創(chuàng)建項目:創(chuàng)建一個Android應用程序項目,取名為MyDiary;將默認的Activity名稱MainActivity.java重命名為LoginActivity.java,其對應的XML布局文件為res\layout\activity_login.xml;新建一個Activity名稱為DiaryActivity.java,其對應的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">請在這兒寫下你的心情日記</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登錄界面布局

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

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

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

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

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

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

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

在DiaryActivit

溫馨提示

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

評論

0/150

提交評論