




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Android項目實戰(zhàn)博學(xué)谷 第3章 注冊與登錄模塊 歡迎界面開發(fā) 用戶登錄與注冊 u 掌 握 歡 迎 界 面 的 開 發(fā) , 能 夠 獨 立 制 作 歡 迎 界 面 ;u 掌握注冊和登錄模塊的開發(fā),能夠?qū)崿F(xiàn)用戶登錄功能。 學(xué)習(xí)目標(biāo) 3.1 歡迎界面3.2 注冊主講內(nèi)容Speech content主講內(nèi)容3.3 登錄 3.1 歡迎界面任務(wù)綜述任務(wù)綜述在實際開發(fā)中,開啟應(yīng)用程序時首先會呈現(xiàn)一個歡迎界面,用于展示產(chǎn)品Logo或展示廣告等,接下來將創(chuàng)建博學(xué)谷項目的歡迎界面。博學(xué)谷項目的歡迎界面是由RelativeLayout布局和一個TextView控件組成,其中RelativeLayout的背景圖
2、片用于展示產(chǎn)品Logo,TextView控件用于展示程序版本號。 3.1 歡迎界面【知識點】【知識點】 布局文件的創(chuàng)建與設(shè)計; RelativeLayout布局、TextView控件; Timer與TimerTask?!炯寄茳c】【技能點】 實現(xiàn)Android項目的創(chuàng)建; 通過Timer實現(xiàn)界面延遲跳轉(zhuǎn); 通過PackageManager獲取程序版本號。 【任務(wù)-】歡迎界面任務(wù)分析任務(wù)分析博學(xué)谷項目的歡迎界面效果如圖3-1所示。 【任務(wù)-】歡迎界面任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21) (4)修改清單文件 android:icon=mipmap/app_icon 在A
3、ndroidManifest.xml的標(biāo)簽中修改icon屬性,引入博學(xué)谷圖標(biāo)。 在標(biāo)簽中修改theme屬性,去掉標(biāo)題欄, android:theme=style/Theme.AppCompat.NoActionBar 在配置文件中將MainActivity的標(biāo)簽以及標(biāo)簽中的所有內(nèi)容剪切到SplashActivity所在的標(biāo)簽中 【任務(wù)-2】歡迎界面邏輯代碼任務(wù)分析任務(wù)分析歡迎界面主要展示產(chǎn)品Logo和版本信息,通常會在該界面停留一段之后自動跳轉(zhuǎn)到其他界面,因此需要在邏輯代碼中設(shè)置歡迎界面暫停幾秒(3秒)后再跳轉(zhuǎn),并獲取程序的版本號。 任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P
4、21)【任務(wù)-2】歡迎界面邏輯代碼 Timer類是JDK(JavaSE Development Kit是Java開發(fā)工具包)中提供的一個定時器工具,使用時會在主線程之外開啟一個單獨的線程執(zhí)行指定任務(wù),任務(wù)可以執(zhí)行一次或多次。 TimerTask類是一個實現(xiàn)了Runnable接口的抽象類,同時代表一個可以被Timer執(zhí)行的任務(wù),因此跳轉(zhuǎn)到主界面的任務(wù)代碼寫在TimerTask的run()方法中。 Timer的schedule()方法是任務(wù)調(diào)度方法,在3秒之后調(diào)度TimerTask執(zhí)行跳轉(zhuǎn)操作,實現(xiàn)延遲跳轉(zhuǎn)功能。 Timer timer=new Timer(); TimerTask task=ne
5、w TimerTask() Override public void run() Intent intent=new Intent(SplashActivity.this, MainActivity.class); startActivity(intent); SplashActivity.this.finish(); ; timer.schedule(task, 3000); 在指定時間內(nèi)執(zhí)行的在指定時間內(nèi)執(zhí)行的task設(shè)置設(shè)置task延遲延遲3秒后執(zhí)行秒后執(zhí)行(2)讓界面延遲跳轉(zhuǎn) 3.1 歡迎界面3.2 注冊主講內(nèi)容Speech content主講內(nèi)容3.3 登錄 3.2 注冊任務(wù)綜述任務(wù)
6、綜述注冊界面主要用于用戶輸入注冊信息,在注冊界面中用戶需要輸入用戶名、密碼、再次輸入密碼(確保密碼輸入無誤),當(dāng)點擊注冊按鈕時進行注冊。由于博學(xué)谷項目使用的是本地數(shù)據(jù),因此注冊成功后,需要將用戶名和密碼保存在SharedPreferences中便于后續(xù)用戶登錄。為了保證賬戶的安全,在保存密碼時會采用MD5加密算法,這種算法是不可逆的,且具有一定的安全性。 【知識點】【知識點】標(biāo)題欄的創(chuàng)建;ImageView控件、EditText控件、Button控件;SharedPreferences的使用;setResult(RESULT_OK, data)方法的使用;MD5加密算法?!炯寄茳c】【技能點】掌
7、握注冊界面的設(shè)計和邏輯構(gòu)思;掌握標(biāo)題欄的創(chuàng)建以及常用控件的使用;通過SharedPreferences實現(xiàn)數(shù)據(jù)的存取功能;通過setResult(RESULT_OK, data)方法實現(xiàn)界面間數(shù)據(jù)的回傳;通過MD5加密算法實現(xiàn)密碼加密功能;實現(xiàn)博學(xué)谷的注冊功能。3.2 注冊 任務(wù)分析任務(wù)分析在博學(xué)谷項目中,大部分界面都有一個后退鍵和一個標(biāo)題欄。為了便于代碼重復(fù)利用,可以將后退鍵和標(biāo)題欄抽取出來單獨放在一個布局文件(main_title_bar.xml)中,界面效果如圖3-2所示。【任務(wù)-3】標(biāo)題欄 任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21)【任務(wù)-3】標(biāo)題欄 按鈕按下狀
8、態(tài)按鈕按下狀態(tài)(2)創(chuàng)建背景選擇器 【任務(wù)-4】注冊界面任務(wù)分析任務(wù)分析注冊界面用于輸入用戶的注冊信息,在注冊界面中需要3個EditText用于輸入用戶名、密碼、再次確認密碼,當(dāng)點擊注冊按鈕后完成用戶注冊,界面效果如圖3-3所示。 任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21)【任務(wù)-4】注冊界面 【任務(wù)-5】MD5加密算法任務(wù)分析任務(wù)分析MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),MD5算法簡單來說就是把任意長度的字符串變換成固定長度(通常是128位)的16進制字符串。在存儲密碼過程中,直接存儲明文密碼是很危險的,因此在存儲密碼前
9、需要使用MD5算法加密,這樣不僅提高了用戶信息的安全性,同時也增加了密碼破解的難度。 任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21)【任務(wù)-5】MD5加密算法 【任務(wù)-6】注冊界面邏輯代碼任務(wù)分析任務(wù)分析在注冊界面點擊注冊按鈕后,需要獲取用戶名,用戶密碼和再次確認密碼,當(dāng)兩次密碼相同時,將用戶名和密碼(經(jīng)過MD5加密)保存到SharedPreferences中。同時當(dāng)注冊成功之后需要將用戶名傳遞到登錄界面(LoginActivity目前還未創(chuàng)建)中。 【任務(wù)-6】注冊界面邏輯代碼任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21) /* * 從SharedPr
10、eferences中讀取輸入的用戶名,判斷SP中是否有此用戶名 */ private boolean isExistUserName(String userName) boolean has_userName=false; SharedPreferences sp=getSharedPreferences(loginInfo, MODE_PRIVATE); String spPsw=sp.getString(userName, ); if(!TextUtils.isEmpty(spPsw) has_userName=true; return has_userName; (2)保存注冊信息到Sh
11、aredPreferences中 /* * 保存用戶名和密碼到SharedPreferences中 */ private void saveRegisterInfo(String userName,String psw) String md5Psw=MD5Utils.md5(psw); /把密碼用MD5加密 /loginInfo表示文件名 SharedPreferences sp=getSharedPreferences(loginInfo, MODE_PRIVATE); SharedPreferences.Editor editor=sp.edit();/獲取編輯器 /以用戶名為key,密碼
12、為value保存到SharedPreferences中 editor.putString(userName, md5Psw); mit();/提交修改 (2)保存注冊信息到SharedPreferences中 3.1 歡迎界面3.2 注冊主講內(nèi)容Speech content主講內(nèi)容3.3 登錄 3.3 登錄任務(wù)綜述任務(wù)綜述登錄界面主要是為用戶提供一個輸入登錄信息的界面,當(dāng)點擊登錄按鈕時需要在SharedPreferences中查詢輸入的用戶名是否有對應(yīng)的密碼,如果有則用此密碼與當(dāng)前輸入的密碼(需MD5加密)進行比對,如果信息一致,則登錄成功,并把登錄成功的狀態(tài)和用戶名保存到SharedPref
13、erences中,便于后續(xù)判斷登錄狀態(tài)和獲取用戶名。如果登錄失敗,則有兩種情況,一種是輸入的用戶名和密碼不一致;另一種是此用戶名不存在。 【知識點】【知識點】標(biāo)題欄的引用;EditText控件、Button控件;SharedPreferences的使用;setResult(RESULT_OK, data)方法的使用;Intent的使用?!炯寄茳c】【技能點】掌握登錄界面的設(shè)計和邏輯構(gòu)思;通過SharedPreferences實現(xiàn)數(shù)據(jù)的存取功能;通過setResult(RESULT_OK, data)方法實現(xiàn)界面間數(shù)據(jù)的回傳;通過Intent實現(xiàn)Activity之間的跳轉(zhuǎn);實現(xiàn)博學(xué)谷的登錄功能。3
14、.3 登錄 【任務(wù)-7】登錄界面 任務(wù)分析任務(wù)分析登錄界面主要是為用戶提供一個登錄的入口,在登錄界面中用戶可以輸入用戶名和密碼,點擊登錄按鈕。若用戶還未注冊,可以點擊“立即注冊”進入注冊界面;若用戶忘記密碼,則可以點擊“找回密碼”進入找回密碼界面(找回密碼界面未創(chuàng)建),界面效果如圖3-4所示。 【任務(wù)-7】登錄界面 任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21) 【任務(wù)-8】登錄界面邏輯代碼任務(wù)分析任務(wù)分析當(dāng)點擊登錄按鈕時,需要先判斷用戶名和密碼是否為空,若為空則提示請輸入用戶名和密碼;若不為空則獲取用戶輸入的用戶名,由于博學(xué)谷項目用的是本地數(shù)據(jù),因此根據(jù)用戶名在Share
15、dPreferences中查詢是否有對應(yīng)的密碼,如果有對應(yīng)的密碼并且與用戶輸入的密碼(需MD5加密)比對一致,則登錄成功。 【任務(wù)-8】登錄界面邏輯代碼任務(wù)實施任務(wù)實施任務(wù)步驟(任務(wù)步驟(詳見教材詳見教材P15P21) /* *從SharedPreferences中根據(jù)用戶名讀取密碼 */ private String readPsw(String userName) SharedPreferences sp=getSharedPreferences(loginInfo, MODE_PRIVATE); return sp.getString(userName, ); (3)保存登錄狀態(tài)到Sha
16、redPreferences中 /* *保存登錄狀態(tài)和登錄用戶名到SharedPreferences中 */ private void saveLoginStatus(boolean status,String userName) /loginInfo表示文件名 SharedPreferences sp=getSharedPreferences(loginInfo, MODE_PRIVATE); SharedPreferences.Editor editor=sp.edit(); /獲取編輯器 editor.putBoolean(isLogin, status); /存入boolean類型的登
17、錄狀態(tài) editor.putString(loginUserName, userName);/存入登錄時的用戶名 mit(); /提交修改 (3)保存登錄狀態(tài)到SharedPreferences中 Override protected void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data); if(data!=null) /從注冊界面?zhèn)鬟f過來的用戶名 String userName =data.getStringExtra(userName); if(!TextUtils.isEmpty(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 來料檢驗報告抽樣方案
- 2025年綜合類-企業(yè)管理咨詢實務(wù)-第五章財務(wù)管理咨詢歷年真題摘選帶答案(5卷單選題100道)
- 農(nóng)村危房拆除調(diào)查方案
- 2025年綜合類-交通運輸管理-鐵路運輸歷年真題摘選帶答案(5卷100題)
- 商鋪摸底排查方案簡單
- 傳動線改造方案
- 茶葉破損處理方案模板
- 企業(yè)贊助資金使用方案
- 2025年綜合類-臨床醫(yī)學(xué)檢驗技術(shù)(士)-流式細胞儀分析技術(shù)及應(yīng)用歷年真題摘選帶答案(5卷單選題100道)
- 2025年綜合類-臨床醫(yī)學(xué)檢驗技術(shù)(士)-醫(yī)學(xué)蠕蟲歷年真題摘選帶答案(5卷單選題100題)
- 婦產(chǎn)科護理技能實訓(xùn) 課件 1.1.2陰道灌洗技術(shù)
- 財務(wù)總監(jiān)崗位面試題及答案(經(jīng)典版)
- 手術(shù)室低值耗材成本管理
- 2024年無人駕駛環(huán)衛(wèi)行業(yè)研究報告
- 制造業(yè)的綠色生產(chǎn)與可持續(xù)發(fā)展考核試卷
- DB32T 1590-2010 鋼管塑料大棚(單體)通 用技術(shù)要求
- 阿片類藥物不良反應(yīng)綜合防治專家共識(2024年版)
- 農(nóng)村訂單定向醫(yī)學(xué)專科(高職)生培養(yǎng)定向就業(yè)協(xié)議書
- 對賬單標(biāo)準格式模板
- 2025年中考物理一輪復(fù)習(xí)資料配套練習(xí)專題02 光現(xiàn)象(測試)(含答案)
- 瞳孔觀察方法與技巧
評論
0/150
提交評論