Android物聯(lián)網(wǎng)應(yīng)用編程高職全套教學(xué)課件_第1頁(yè)
Android物聯(lián)網(wǎng)應(yīng)用編程高職全套教學(xué)課件_第2頁(yè)
Android物聯(lián)網(wǎng)應(yīng)用編程高職全套教學(xué)課件_第3頁(yè)
Android物聯(lián)網(wǎng)應(yīng)用編程高職全套教學(xué)課件_第4頁(yè)
Android物聯(lián)網(wǎng)應(yīng)用編程高職全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩248頁(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)介

項(xiàng)目一

HelloWorld項(xiàng)目1:HelloWorld.pptx項(xiàng)目2:用戶登錄界面設(shè)計(jì).pptx項(xiàng)目3:簡(jiǎn)易相冊(cè)設(shè)計(jì).pptx項(xiàng)目4:安卓考試.pptx項(xiàng)目5:兩屏消息傳遞.pptx項(xiàng)目6:家電列表.pptx項(xiàng)目7:電器清單.pptx項(xiàng)目8:日期預(yù)約.pptx項(xiàng)目9:定時(shí)提醒.pptx項(xiàng)目10:GPS定位.pptx項(xiàng)目11:發(fā)送郵件.pptx項(xiàng)目12:發(fā)送短信.pptx項(xiàng)目13:撥打電話.pptx項(xiàng)目14:訪問(wèn)網(wǎng)頁(yè).pptx項(xiàng)目15:倒計(jì)時(shí).pptx項(xiàng)目16:學(xué)生數(shù)據(jù)庫(kù).pptx項(xiàng)目17:網(wǎng)絡(luò)通信.pptx全套可編輯PPT課件1項(xiàng)目一:HelloWorld1.1項(xiàng)目介紹“HelloWorld”,世界上的第一個(gè)程序,最早出現(xiàn)在1972年的貝爾實(shí)驗(yàn)室。延續(xù)至今,“HelloWorld”演變成了學(xué)習(xí)任何一種編程語(yǔ)言的第一個(gè)入門程序。本項(xiàng)目將帶領(lǐng)學(xué)習(xí)者在AndroidStudio集成開發(fā)環(huán)境中編寫出第一個(gè)應(yīng)用――“HelloWorld”,如圖1-1所示。圖1-1第一個(gè)Android應(yīng)用--“HelloWorld”21.2相關(guān)知識(shí)1.2.1AndroidStudio集成開發(fā)環(huán)境AndroidStudio是一款由google公司于2013年5月推出的Android集成開發(fā)工具。它包含用于構(gòu)建Android應(yīng)用所需的所有工具,書中項(xiàng)目均使用AndroidStudio2.1.2版進(jìn)行開發(fā)。

下載并安裝Java開發(fā)工具包安裝AndroidStudio開發(fā)環(huán)境(主要針對(duì)Windows操作系統(tǒng))需要先安裝一個(gè)重要的前置組件—Java開發(fā)工具包(JavaDevelopmentKit,JDK),可至ORACLE官網(wǎng):/technetwork/java/javase/downloads/index.html下載,下載時(shí)請(qǐng)注意選擇相應(yīng)的系統(tǒng)及處理器型號(hào),例如:64位操作系統(tǒng)需要下載Windowsx64程序文件,32位操作系統(tǒng)需要下載Windowsx86程序文件。如圖1-2所示。小貼士:點(diǎn)擊下載鏈接前需要先選中“AcceptLicenseAgreement”,表示接受許可協(xié)議。Windows平臺(tái)Java開發(fā)工具包圖1-2JDK下載頁(yè)面3JDK的安裝較簡(jiǎn)單,雙擊下載的exe可執(zhí)行文件,初學(xué)者建議選用默認(rèn)安裝目錄C:\ProgramFiles\Java\jdk1.8.0_101\,然后點(diǎn)擊“Next”按鈕,即可完成安裝。請(qǐng)學(xué)習(xí)者自行實(shí)踐。

配置Windows環(huán)境變量為使AndroidStudio能夠找到JDK,需要對(duì)Windows進(jìn)行環(huán)境配置。右擊“我的電腦”“屬性”菜單(也可使用“控制面板”“系統(tǒng)和安全”“系統(tǒng)”)。在打開的“系統(tǒng)”窗口右側(cè)目錄中選擇“高級(jí)系統(tǒng)設(shè)置”項(xiàng),打開“系統(tǒng)屬性”對(duì)話框,點(diǎn)擊底部的“環(huán)境變量”按鈕,打開“環(huán)境變量”對(duì)話框。點(diǎn)擊“新建”按鈕,輸入變量名:JAVA_HOME,變量值:C:\ProgramFiles\Java\jdk1.8.0_101。如圖1-3所示。圖1-3新建JAVA_HOME環(huán)境變量在“系統(tǒng)變量”組中找到“PATH”項(xiàng),點(diǎn)擊“編輯”按鈕,在變量值項(xiàng)中添加:;%JAVA_HOME%\bin。如圖1-4所示。圖1-4編輯PATH環(huán)境變量4

下載并安裝AndroidStudioAndroidStudio的安裝文件可至AndroidStudio中文社區(qū)(官網(wǎng))下載:/,如圖1-5所示。單擊綠色“下載ANDROIDSTUDIO”按鈕即可下載。圖1-5AndroidStudio下載頁(yè)面AndroidStudio的安裝也請(qǐng)初學(xué)者使用默認(rèn)安裝目錄及配置,自行實(shí)踐。1.2.2XML語(yǔ)言XML(eXtensibleMarkupLanguage)指可擴(kuò)展標(biāo)記語(yǔ)言。它是一種被設(shè)計(jì)用來(lái)存儲(chǔ)和傳輸數(shù)據(jù)的語(yǔ)言,是W3C的推薦標(biāo)準(zhǔn)。下面是張三寫給李四的便簽,以XML表示為:5<?xmlversion="1.0"encoding="utf-8"?><note> <to>李四</to> <from>張三</from> <heading>生日快樂祝福</heading> <body>李四你好,你的生日到了,祝你生日快樂!張三</body></note>其結(jié)構(gòu)與HTML很類似,也是一種標(biāo)記語(yǔ)言。Android應(yīng)用程序中主要使用XML語(yǔ)言進(jìn)行應(yīng)用的配置、數(shù)據(jù)存儲(chǔ)和傳輸。例如:AndroidManifest.xml(每個(gè)APP必須的配置文件)、activity_main.xml(界面布局文件)colors.xml(顏色配置文件)等。如圖1-6所示。圖1-6APP中的若干xml文件61.2.3Activity

Activity是Android組件中最重要的四大組件之一(Activity,Service服務(wù),ContentProvider內(nèi)容提供,BroadcastReceiver廣播接收器)。Activity的主要作用是提供一個(gè)屏幕,負(fù)責(zé)與用戶交互。在Android中,Activity擁有四種基本狀態(tài):Active/Running(激活/運(yùn)行)、Paused(暫停)、Stopped(停止)、Killed(從內(nèi)存中刪除),其生命周期如圖1-7所示。圖1-7Activity的生命周期7當(dāng)?shù)谝淮握{(diào)用一個(gè)Activity就會(huì)執(zhí)行onCreate方法,后面總是接著執(zhí)行onStart方法。當(dāng)Activity處于可見狀態(tài)的時(shí)候就會(huì)調(diào)用onStart方法,接著如果調(diào)用onResume我們就會(huì)看到這個(gè)界面,調(diào)用onStop方法的話就會(huì)被隱藏。當(dāng)Activity可以得到用戶焦點(diǎn)的時(shí)候就會(huì)調(diào)用onResume方法,后面總是調(diào)用onPause方法。當(dāng)Activity沒有被銷毀的時(shí)候重新調(diào)用這個(gè)Activity就會(huì)調(diào)用onRestart方法,后面總是接著執(zhí)行onStart方法。當(dāng)系統(tǒng)將要開始加載另外一個(gè)Activity的時(shí)候調(diào)用onPause方法,這個(gè)方法通常用于提交固定的數(shù)據(jù)、停止動(dòng)畫和其他可能消耗CPU的事情。onPause必須運(yùn)行的很快,因?yàn)閷⒁虞d的Activity在它返回的時(shí)候才會(huì)"恢復(fù)"。如果重新返回這個(gè)Activity執(zhí)行onResume方法,如果這個(gè)Activity不可見的時(shí)候就調(diào)用onStop方法。當(dāng)Activity處于不可見狀態(tài)的時(shí)候就會(huì)調(diào)用onStop方法,在Activity將要被銷毀的時(shí)候或者一個(gè)新的Activity出現(xiàn)在界面的時(shí)候調(diào)用,接下來(lái)?xiàng)l用onRestart或者onDestory方法。當(dāng)Activity被銷毀時(shí)會(huì)調(diào)用onDestory方法。1.2.4TextViewTextView(文本視圖),類似Label控件,在Android中主要用來(lái)顯示一行或多行文本。TextView有豐富的屬性,下面僅列出若干常用屬性,見表1-1。表1-1TextView常用屬性8屬性描述android:text設(shè)置顯示文本android:textColor設(shè)置文本顏色android:textSize設(shè)置文字大小,推薦度量單位"sp",如:12sp。android:textStyle設(shè)置字形值選項(xiàng):bold:粗體italic:斜體bolditalic:加粗加斜可以設(shè)置一個(gè)或多個(gè),用"|"隔開。android:textScaleX設(shè)置文字之間間隔,默認(rèn)為1.0f。android:maxLength限制顯示的文本長(zhǎng)度,超出部分不顯示android:singleLine設(shè)置單行顯示。如果和layout_width一起使用,當(dāng)文本不能全部顯示時(shí),后面用"…"來(lái)表示。android:lines設(shè)置文本的行數(shù),設(shè)置兩行就顯示兩行,即使第二行沒有數(shù)據(jù)。android:editable設(shè)置是否可編輯android:layout_width設(shè)置LinearLayout的寬度。值選項(xiàng):match_parent:與fill_parent作用相同,強(qiáng)制性地使當(dāng)前元素的寬度充滿它的父元素wrap_content:僅以元素中的內(nèi)容完整顯示作為當(dāng)前元素的寬度自定義,例如:300dpandroid:layout_height設(shè)置LinearLayout的高度。值選項(xiàng)與layout_width相同,其結(jié)果作用于高度。91.3項(xiàng)目開發(fā)1.3.1任務(wù)分析這是我們學(xué)習(xí)Android的第一個(gè)入門應(yīng)用。界面簡(jiǎn)潔,只有一個(gè)TextView(文本視圖)控件,顯示“HelloWorld!”,在屏幕中水平居中、垂直居中。此外,整個(gè)界面以全屏形式顯示,頂部不顯示標(biāo)題欄(默認(rèn)有標(biāo)題欄)。TextView水平和垂直均居中無(wú)標(biāo)題圖1-8第一個(gè)APP應(yīng)用--HelloWorld1.3.2任務(wù)實(shí)施

新建“HelloWorld”項(xiàng)目啟動(dòng)“AndroidStudio”開發(fā)環(huán)境,打開“WelcometoAndroidStudio”對(duì)話框。如圖1-9所示。10圖1-9AndroidStudio歡迎窗口選擇窗口右側(cè)的“StartanewAndroidStudioproject”項(xiàng),新建一個(gè)android項(xiàng)目。在打開的“CreateNewProject”對(duì)話框中,輸入Applicationname為“HelloWorld”;CompanyDomain為androidbook;在Porjectlocation項(xiàng)的右端瀏覽選擇存放項(xiàng)目的文件夾(注意路徑中不可有中文)。如圖1-10所示。11圖1-10新建“HelloWorld”項(xiàng)目點(diǎn)擊“Next”按鈕,進(jìn)入“目標(biāo)Android設(shè)備”選擇頁(yè)面。該頁(yè)面提供了當(dāng)前應(yīng)用面向的Android設(shè)備(可以是:手機(jī)、平板、可穿戴設(shè)備、android電視、谷歌眼鏡等)和適用版本。如圖1-11所示。12圖1-11選擇APP可適用的Android設(shè)備(版本)自AndroidStudio2.0版本后,開發(fā)手機(jī)和平板的應(yīng)用時(shí),開發(fā)環(huán)境會(huì)推薦適用API版本,可以通過(guò)Helpmechoose鏈接來(lái)查看android各版本的市場(chǎng)占有率,如圖1-12所示。13圖1-12Android各版本市場(chǎng)占有率選擇好API版本后,單擊“Next”按鈕,打開Android的Activity模板頁(yè)。選擇“EmptyActivity”項(xiàng)(推薦初學(xué)者),添加一個(gè)Activity頁(yè)面。如圖1-13所示。14圖1-13Activity模板選擇頁(yè)點(diǎn)擊“Next”按鈕,進(jìn)入設(shè)置Activity文件屬性頁(yè)面。可以設(shè)置ActivityName和LayoutName名稱,并可設(shè)置當(dāng)前文件為APP的啟動(dòng)頁(yè)。如圖1-14所示。我們接受該頁(yè)的默認(rèn)設(shè)置。15圖1-14Activity文件屬性設(shè)置點(diǎn)擊“Finish”按鈕后,即正式進(jìn)入了AndroidStudio的開發(fā)環(huán)境。如圖1-15所示。16圖1-15“HelloWorld”項(xiàng)目開發(fā)環(huán)境AndroidStudio窗口基本框架由上中下三部分構(gòu)成。 上部有:菜單、常用工具欄、文件路徑等3行組成; 中部是項(xiàng)目開發(fā)的主要工作區(qū),又分為左右兩個(gè)部分,左邊是項(xiàng)目資源管理窗口,右邊是編碼設(shè)計(jì)窗口; 下部顯示項(xiàng)目的狀態(tài)信息及調(diào)試面板等。“MainActivity.java”文件1 packageandroidbook.helloworld;2 3 importandroid.support.v7.app.AppCompatActivity;174 importandroid.os.Bundle;5 6 publicclassMainActivityextendsAppCompatActivity{7 /**Calledwhentheactivityisfirstcreated.*/8 @Override9 publicvoidonCreate(BundlesavedInstanceState){10 super.onCreate(savedInstanceState);11 setContentView(R.layout.activity_main);12 }13 }關(guān)鍵代碼解析:1) 第1行代碼:當(dāng)前文件所在項(xiàng)目的包名,由項(xiàng)目CompanyDomain和Applicationname構(gòu)成,詳見圖1-10中新建文件圖示。2) 第3-4行代碼:導(dǎo)入開發(fā)項(xiàng)目時(shí)默認(rèn)需要的支持庫(kù)。3) 第6行代碼:表示新建名為“MainActivity”的類,繼承自“AppCompatActivity”類。4) 第8行代碼:表示第9行中的onCreate方法需要根據(jù)當(dāng)前應(yīng)用進(jìn)行重寫(關(guān)于類的封裝、繼承、多態(tài),構(gòu)造函數(shù)、方法重寫等需要請(qǐng)學(xué)習(xí)者自學(xué)面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)資料)。5) 第9行代碼,定義重寫onCreate方法。6) 第10行代碼,調(diào)用父類構(gòu)造函數(shù)。7) 第11行代碼,綁定界面布局文件:activity_main。(界面布局文件主要負(fù)責(zé)與用戶交互對(duì)象的布局與外觀設(shè)置,其文件位置位于res>layout中,如圖1-16所示。)每一個(gè)Activity文件都必須要綁定一個(gè)對(duì)應(yīng)的layout文件。18圖1-16Activity文件與layout文件19項(xiàng)目二

用戶登錄界面設(shè)計(jì)20項(xiàng)目二:用戶登錄界面設(shè)計(jì)2.1項(xiàng)目介紹但凡需要記錄用戶使用狀態(tài)的APP,都會(huì)要求使用者輸入帳號(hào)和密碼登入系統(tǒng)。用戶登錄雖然重在程序功能的實(shí)現(xiàn),但更需要美觀的界面帶來(lái)愉悅的操作體驗(yàn)。本項(xiàng)目要求學(xué)習(xí)者模仿圖2-1,完成IoT系統(tǒng)的用戶登錄界面設(shè)計(jì)。圖2-1用戶登錄界面212.2相關(guān)知識(shí)Apple的成功,源自他優(yōu)秀的產(chǎn)品設(shè)計(jì)和人性化的UI(UserInterface)體驗(yàn)。UI的設(shè)計(jì),關(guān)系到APP界面是否美觀,應(yīng)用是否讓人易于接受,更甚者將直接關(guān)乎應(yīng)用是否易于推廣,因此,UI設(shè)計(jì)是android開發(fā)的必備技能之一。受Android設(shè)備屏幕大小的限制,其UI界面不需要像網(wǎng)頁(yè)UI那么復(fù)雜。簡(jiǎn)明的布局,一目了然的操作,是androidUI設(shè)計(jì)的關(guān)鍵。一個(gè)Android應(yīng)用的界面由View和ViewGroup兩類對(duì)象構(gòu)建而成。View是Android中所有可視化控件的基類,主要提供了控件繪制和事件處理的方法,創(chuàng)建用戶界面所使用的控件都繼承自View類,如TextView、Button等。(控制的具體使用將在本書后面的項(xiàng)目中展開介紹)。ViewGroup也是View的一個(gè)子類,但它主要用來(lái)充當(dāng)View的容器,進(jìn)行界面的布局管理。Android的布局管理器都是以ViewGroup為基類派生出來(lái)的,包括有:線性布局(LinearLayout)、相對(duì)布局(RelativeLayout)、絕對(duì)布局(AbsoluteLayout)、表格布局(TableLayout)、網(wǎng)格視圖(GridView)、框架布局(FrameLayout)等。布局管理器之間的繼承關(guān)系如圖2-2所示。圖2-2布局管理器之間的繼承關(guān)系在上述布局管理器中,最常用的是LinearLayout和RelativeLayout布局。下面分別介紹。222.2.1LinearLayoutLinearLayout(線性布局)從外框上可以理解為一個(gè)div。LinearLayout有垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal")兩種。當(dāng)使用垂直布局時(shí),每一行就只有一個(gè)元素,多個(gè)元素依次垂直往下;使用水平布局時(shí),只有一行,每一個(gè)元素依次從左向右排列。如圖2-3a和2-3b所示。圖2-3aLinearLayout水平布局圖2-3bLinearLayout垂直布局從左到右排列從上到下排列線性布局的屬性很多,下表2-1列出了線性布局的常用屬性。23表2-1線性布局常用屬性屬性描述android:orientation設(shè)置LinearLayout中的元素的排列方向。值選項(xiàng):horizontal:水平vertical:垂直android:layout_gravity設(shè)置LinearLayout相對(duì)于父元素的擺放位置值選項(xiàng):center:居中center_horizontal:水平居中center_vertical:垂直居中l(wèi)eft:靠左right:靠右top:靠上bottom:靠下android:gravity設(shè)置LinearLayout中所有子元素的擺放位置值選項(xiàng)與layout_gravity相同android:layout_weight設(shè)置LinearLayout所在行的行距。水平設(shè)置時(shí)候代表列寬,垂直設(shè)置時(shí)代表行寬,weight數(shù)值越大間距就越大。android:layout_width設(shè)置LinearLayout的寬度。值選項(xiàng):match_parent:android2.2版本后與fill_parent作用相同,強(qiáng)制性地使當(dāng)前元素的寬度充滿它的父元素wrap_content:僅以元素中的內(nèi)容完整顯示作為當(dāng)前元素的寬度自定義,例如:300dpandroid:layout_height設(shè)置LinearLayout的高度。值選項(xiàng)與layout_width相同,其結(jié)果作用于高度。242.2.2RelativeLayoutRelativeLayout(相對(duì)布局),顧名思義,在布局元素時(shí),需要指定元素相對(duì)于其父元素或兄弟元素的位置,這在實(shí)際布局中是最常用的布局方式之一。相對(duì)布局屬性多,靈活性大,當(dāng)然操作難度也大,屬性之間產(chǎn)生沖突的的可能性大,使用相對(duì)布局時(shí)要多做測(cè)試。表2-2所列為相對(duì)布局中元素的重要屬性。表2-2相對(duì)布局中元素的重要屬性屬性描述android:layout_below當(dāng)前元素在某指定元素的下方android:layout_above當(dāng)前元素在某指定元素的上方android:layout_toLeftOf當(dāng)前元素在某指定元素的左邊android:layout_toRightOf當(dāng)前元素在某指定元素的右邊android:layout_alignTop當(dāng)前元素的上邊緣和某指定元素的上邊緣對(duì)齊android:layout_alignBottom當(dāng)前元素的上邊緣和某指定元素的下邊緣對(duì)齊android:layout_alignLeft當(dāng)前元素的上邊緣和某指定元素的左邊緣對(duì)齊android:layout_alignRight當(dāng)前元素的上邊緣和某指定元素的右邊緣對(duì)齊上述屬性的值必須為指定元素的id引用名,如“@id/id-name”。繼承自ViewGroup類的布局管理器有許多屬性都是公共的。例如:android:layout_width、android:layout_height等,線性布局和相對(duì)布局都需要對(duì)布局容器進(jìn)行寬和高的設(shè)置。學(xué)習(xí)者可利用VisualStudio開發(fā)環(huán)境的代碼提示功能來(lái)實(shí)踐體會(huì),此處不做贅述。252.3項(xiàng)目開發(fā)2.3.1任務(wù)分析界面的布局方式?jīng)]有標(biāo)準(zhǔn)答案。作為布局設(shè)計(jì)入門,我們將兼顧學(xué)習(xí)和工程要求,綜合使用相對(duì)布局和線性布局兩種方式。用戶登錄界面布局結(jié)構(gòu)分解如圖2-4所示。外層容器RelativeLayout內(nèi)層容器LinearLayout圖2-4登錄界面布局分解圖262.3.2任務(wù)實(shí)施

新建LoginActivity.java文件在“app>java”文件夾的程序包目錄(新建項(xiàng)目時(shí)由CompanyDomain和Applicationname構(gòu)成,詳見項(xiàng)目一)上右擊鼠標(biāo),選擇NewActivityEmptyActivity。如圖2-5所示。圖2-5新建EmptyActivity菜單27在“NewAndroidActivity”窗口中輸入ActivityName:LoginActivity,LayoutName會(huì)自動(dòng)生成為activity_login(也可修改,建議使用默認(rèn)),勾選LauncherActivity(設(shè)置當(dāng)前Activity為啟動(dòng)文件),Packagename默認(rèn)繼承新建項(xiàng)目時(shí)的名稱。如圖2-6所示。圖2-6新建LoginActivity窗口28點(diǎn)擊“Finish”按鈕,開發(fā)環(huán)境會(huì)自動(dòng)生成LoginActivity.java類文件和activity_login.xml布局文件。LoginActivity.java類文件自動(dòng)生成代碼如下:1 importandroid.support.v7.app.AppCompatActivity;2 importandroid.os.Bundle;3 4 publicclassLoginActivityextendsAppCompatActivity{5 6 @Override7 publicvoidonCreate(BundlesavedInstanceState){8 super.onCreate(savedInstanceState);9 setContentView(R.layout.activity_login);10 }}關(guān)鍵代碼解析:第9行代碼:setContentView(R.layout.activity_login);其作用是為當(dāng)前文檔綁定layout資源中的界面布局文件“activity_login.xml”,如圖2-7所示。程序啟動(dòng)后將顯示“activity_login.xml”文件中所有的view對(duì)象。圖2-7界面布局文件位置29

在activity_login.xml中布局界面1 <?xmlversion="1.0"encoding="utf-8"?>2 <RelativeLayoutxmlns:android="/apk/res/android"3 xmlns:tools="/tools"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 android:paddingBottom="@dimen/activity_vertical_margin"7 android:paddingLeft="@dimen/activity_horizontal_margin"8 android:paddingRight="@dimen/activity_horizontal_margin"9 android:paddingTop="@dimen/activity_vertical_margin"10 tools:context=".LoginActivity"11 android:background="@drawable/background_login">12 13 <ImageView14 android:id="@+id/headImg"15 android:layout_width="180sp”16 android:layout_height="180sp”17 android:src="@drawable/headimg"18 android:layout_marginTop="50sp”19 android:layout_centerHorizontal="true"/>20 21 <LinearLayout22 android:id="@+id/loginPanel"23 android:layout_below="@id/headImg"24 android:layout_width="400sp”3025 android:layout_height="300sp”26 android:layout_centerHorizontal="true"27 android:orientation="vertical"28 android:layout_marginTop="50sp”29 android:background="@drawable/background_login_div">30 31 <TextView32 android:id="@+id/textView1"33 android:layout_width="wrap_content"34 android:layout_height="wrap_content"35 android:layout_gravity="center_horizontal"36 android:text="WelcomeToIoTSystem"37 android:layout_marginTop="15sp”38 android:textSize="25sp”/>39 40 <TextView41 android:id="@+id/textView2"42 android:layout_width="wrap_content"43 android:layout_height="wrap_content"44 android:layout_gravity="center_horizontal"45 android:layout_marginTop="10sp”46 android:text="Pleaseloginfirst"/>47 3148 <EditText49 android:id="@+id/accountEt"50 android:layout_width="match_parent"51 android:layout_height="50sp”52 android:layout_marginLeft="50sp”53 android:layout_marginRight="50sp”54 android:layout_marginTop="15sp”55 android:singleLine="true"56 android:background="@drawable/edit_login"57 android:hint="請(qǐng)輸入您的用戶名"58 android:ems="10">59 60 <requestFocus/>61 </EditText>62 63 <EditText64 android:id="@+id/pwdEt"65 android:layout_width="match_parent"66 android:layout_height="50sp”67 android:layout_marginLeft="50sp”68 android:layout_marginRight="50sp”69 android:layout_marginTop="15sp”70 android:singleLine="true"71 android:password="true"72 android:background="@drawable/edit_login"3273 android:hint="請(qǐng)輸入您的密碼"74 android:ems="10"/>75 76 <Button77 android:id="@+id/subBtn"78 android:layout_width="150sp”79 android:layout_height="wrap_content"80 android:layout_gravity="center_horizontal"81 android:layout_marginTop="18sp”82 android:text="登陸"83 android:background="@drawable/background_button_div"/>84 </LinearLayout>85 86 </RelativeLayout>關(guān)鍵代碼解析:1) 第2-86行代碼,為外層RelativeLayout容器。2) 第2-11行、86行代碼,對(duì)RelativeLayout布局的基本設(shè)置。其中包括容器的寬、高、四周內(nèi)邊距(與其子元素的間距)、背景等。3) 第13-19行代碼,使用ImageView布局用戶頭像。4) 第21-84行代碼,為內(nèi)層LinearLayout容器。5) 第21-29行、84行代碼,對(duì)LinearLayout布局的基本設(shè)置。其中包括容器的寬、高、內(nèi)部元素垂直排列、水平居中、背景等。6) 第23行代碼,android:layout_below="@id/headImg"非常關(guān)鍵。外層的相對(duì)布局要求其內(nèi)部元素(包括嵌套的布局容器)必須給出當(dāng)前元素相對(duì)其他元素的位置。去除該行代碼將會(huì)出現(xiàn)元素重疊的現(xiàn)象,如圖2-8所示。33圖2-8相對(duì)布局未定位時(shí)的元素重疊現(xiàn)象7) 第31-83行代碼,包括了兩段提示文字,一個(gè)用戶名可編輯文本框,一個(gè)密碼可編輯文本框和一個(gè)登陸按鈕。

修改manifests.xml文件配置1 <?xmlversion="1.0"encoding="utf-8"?>2 <manifestxmlns:android="/apk/res/android"3 package="android.book">4 5 <application6 android:allowBackup="true"7 android:icon="@mipmap/ic_launcher"8 android:label="@string/app_name"9 android:supportsRtl="true"3410 android:theme="@style/AppTheme">11 12 <activityandroid:name=".MainActivity">13 </activity>14 15 <activityandroid:name=".LoginActivity"16 android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">17 <intent-filter>18 <actionandroid:name="ent.action.MAIN"/>19 20 <categoryandroid:name="ent.category.LAUNCHER"/>21 </intent-filter>22 </activity>23 </application>24 25 </manifest>關(guān)鍵代碼解析:10) 第16行代碼,為“LoginActivity”文件設(shè)置樣式,選用了黑色系、無(wú)標(biāo)題欄的默認(rèn)樣式(AndroidStudio2.0以上提供)。11) 第17-21行代碼,過(guò)濾配置出“LoginActivity”為APP啟動(dòng)首頁(yè)文件。35

其它元素局部樣式文件在本項(xiàng)目中,考慮到界面的美觀度,對(duì)界面中的背景、文本框、按鈕等元素進(jìn)行了樣式設(shè)置,相關(guān)文件均存放在drawable文件夾中,如圖2-9所示。圖2-9界面元素樣式文件列表1. 界面背景樣式:background_login.xml1 <?xmlversion="1.0"encoding="utf-8"?><shapexmlns:android="/apk/res/android">2 3 <gradient4 android:angle="45"5 android:startColor="#FFACDAE5"6 android:endColor="#FF72CAE1"/>7 8 </shape>36關(guān)鍵代碼解析:第3-6行代碼,設(shè)置整個(gè)界面背景為從左下到右上(45度),線性漸變。2. 登錄信息輸入?yún)^(qū)域樣式:background_login_div.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <shapexmlns:android="/apk/res/android">3 4 <solidandroid:color="#55FFFFFF"/>5 <!--設(shè)置圓角6 注意:bottomRightRadius是左下角而不是右下角bottomLeftRadius右下角7 -->8 <corners9 android:bottomLeftRadius="10sp”10 android:bottomRightRadius="10sp”11 android:topLeftRadius="10sp”12 android:topRightRadius="10sp”/>13 14 </shape>關(guān)鍵代碼解析:第4-12行代碼,設(shè)置矩形區(qū)域的背景色,以及四個(gè)圓角的邊框半徑值。3. 文本框樣式:edit_login.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <selectorxmlns:android="/apk/res/android">3 <itemandroid:state_enabled="false"android:drawable="@drawable/login_input"/>4 <itemandroid:state_pressed="true"android:drawable="@drawable/login_input"/>5 <itemandroid:state_focused="true"android:drawable="@drawable/input_over"/>376 </selector>關(guān)鍵代碼解析:第3-5行代碼,文本框背景、前景形狀。圖像映射成9.png可拉伸效果,具體制作方法請(qǐng)查閱相關(guān)資料。4. 登錄按鈕樣式:background_button_div.xml1 <?xmlversion="1.0"encoding="UTF-8"?>2 <shapexmlns:android="/apk/res/android">3 4 <solidandroid:color="#FF72CAE1"/>5 <!--設(shè)置圓角6 注意:bottomRightRadius是左下角而不是右下角bottomLeftRadius右下角7 -->8 <corners9 android:bottomLeftRadius="10sp”10 android:bottomRightRadius="10sp”11 android:topLeftRadius="10sp”12 android:topRightRadius="10sp”/>13 14 </shape>關(guān)鍵代碼解析:第4-12行代碼,設(shè)置按鈕區(qū)域的背景色,以及四個(gè)圓角的半徑值。38項(xiàng)目三

簡(jiǎn)易相冊(cè)設(shè)計(jì)39項(xiàng)目三:簡(jiǎn)易相冊(cè)設(shè)計(jì)3.1項(xiàng)目介紹一個(gè)APP中,除了文字之外,使用最多的媒體資源就是圖片了。圖片可以用作按鈕上的圖標(biāo),來(lái)增加界面設(shè)計(jì)的美觀度。也可以以相冊(cè)的形式供人們翻閱瀏覽。前者對(duì)象的本質(zhì)是按鈕,后者則是圖像視圖本身。本項(xiàng)目要求學(xué)習(xí)者模仿圖3-1,制作一個(gè)使用“上一頁(yè)”和“下一頁(yè)”按鈕翻閱圖像的簡(jiǎn)易相冊(cè)。圖3-1簡(jiǎn)易相冊(cè)403.2相關(guān)知識(shí)Android中設(shè)計(jì)相冊(cè)的應(yīng)用,最基本的界面元素需要用到圖像視圖(ViewImage)和按鈕(Button),此外,為了讓瀏覽者知道當(dāng)前是第幾張圖像,還使用了信息提示塊――“吐司”(Toast)方法。3.2.1ImageViewImageView(圖像視圖),直接繼承自View類,它的主要功能是用于顯示圖片,實(shí)際上它不僅僅可以用來(lái)顯示圖片,任何Drawable對(duì)象都可以使用ImageView來(lái)顯示。ImageView可以適用于任何布局中,并且Android為其提供了縮放和著色的一些操作。ImageView的常用屬性如表3-1所示。表3-1ImageView常用屬性屬性描述android:src設(shè)置ImageView所顯示的Drawable對(duì)象的IDandroid:adjustViewBounds設(shè)置ImageView是否調(diào)整自己的邊界來(lái)保持所顯示圖片的長(zhǎng)寬比android:maxHeight設(shè)置ImageView的最大高度android:maxWidth設(shè)置ImageView的最大寬度android:scaleType設(shè)置所顯示的圖片如何縮放或移動(dòng)以適應(yīng)ImageView的大小值選項(xiàng):matrix:使用matrix方式進(jìn)行縮放。fitXY:橫向、縱向獨(dú)立縮放,以適應(yīng)該ImageView。fitStart:保持縱橫比縮放圖片,并且將圖片放在ImageView的左上角。fitCenter:保持縱橫比縮放圖片,縮放完成后將圖片放在ImageView的中央。fitEnd:保持縱橫比縮放圖片,縮放完成后將圖片放在ImageView的右下角。center:把圖片放在ImageView的中央,但是不進(jìn)行任何縮放。centerCrop:保持縱橫比縮放圖片,以使圖片能完全覆蓋ImageView。centerInside:保持縱橫比縮放圖片,以使得ImageView能完全顯示該圖片。413.2.2ButtonButton(按鈕)是任何一種面向?qū)ο蟪绦蛟O(shè)計(jì)中最常用的控件之一。Button的主要作用就是提供用戶進(jìn)行點(diǎn)擊、觸摸等操作,并同時(shí)觸發(fā)相應(yīng)的事件。事件的使用方式大同小異,只是觸發(fā)的時(shí)機(jī)不同而已。處理上述兩個(gè)按鈕事件,需要分別實(shí)現(xiàn)View.OnClickListener、View.OnTouchListener接口的方法,如表3-2所示。表3-2Button主要事件事件接口描述View.OnClickListener需要實(shí)現(xiàn)onClick(Viewv)方法,其中v為當(dāng)前觸發(fā)事件的控件。View.OnTouchListener需要實(shí)現(xiàn)onTouch(Viewv,MotionEventevent),其中v為當(dāng)前觸發(fā)事件的控件,event包括了觸摸時(shí)的具體內(nèi)容,如移動(dòng)、按下等。Android中的Button繼承自TextView,其屬性與TextView類似,常用屬性如表3-3所示。事件接口描述android:id設(shè)置Button的ID值android:layout_width設(shè)置Button的寬度值選項(xiàng):match_parent:與fill_parent作用相同,強(qiáng)制性地使當(dāng)前元素的寬度充滿它的父元素wrap_content:僅以元素中的內(nèi)容完整顯示作為當(dāng)前元素的寬度自定義,例如:40dpandroid:layout_height設(shè)置Button的高度。值選項(xiàng)與layout_width相同,其結(jié)果作用于高度。android:text設(shè)置用來(lái)顯示在Button上的文字信息android:background設(shè)置Button的背景圖:用圖像替換Button的默認(rèn)樣式。423.2.3ToastToast(簡(jiǎn)單信息提示塊--“吐司”),可以在當(dāng)前視圖顯示一個(gè)浮動(dòng)的信息提示塊,它永遠(yuǎn)不會(huì)獲得焦點(diǎn),僅僅用于提示信息,并且不影響任何其他操作,在一段時(shí)間后會(huì)自動(dòng)消失,不需要用戶對(duì)它做任何操作。如果只是提示簡(jiǎn)單的信息,使用Android為Toast提供的兩個(gè)靜態(tài)的方法最為方便,它們會(huì)返回一個(gè)Toast對(duì)象,如果需要顯示,只需要調(diào)用show()方法顯示即可,下面是這兩個(gè)方法的簽名:staticToastmakeText(Contextcontext,intresId,intduration);staticToastmakeText(Contextcontext,CharSequencetext,intduration);上面兩個(gè)方法,參數(shù)大致相同,一個(gè)上下文對(duì)象Context,一個(gè)顯示的消息來(lái)源,一個(gè)設(shè)置持續(xù)時(shí)間。消息來(lái)源可以指定String資源,使用<string.../>標(biāo)簽在XML資源文件中定義,還可以指定一個(gè)字符串用于消息展示。最后的duration參數(shù)設(shè)置了Toast的持續(xù)時(shí)間,一般使用Toast自帶的兩個(gè)整形的常量:LENGTH_LONG(1,時(shí)間稍長(zhǎng))、LENGTH_SHORT(0,時(shí)間稍短),針對(duì)不同的使用場(chǎng)景,選擇不用的持續(xù)時(shí)間。3.3項(xiàng)目開發(fā)3.3.1任務(wù)分析為直觀的實(shí)現(xiàn)多個(gè)圖像的瀏覽,本項(xiàng)目共使用了3種界面元素:圖像視圖、按鈕和信息提示塊。其中圖像視圖主要用來(lái)顯示相冊(cè)中的圖像;按鈕有2個(gè),分別控制瀏覽上一張和下一張圖像,考慮到美觀度,按鈕使用了圖片做背景,替代了單一的文字提示。信息提示塊用來(lái)告知用戶當(dāng)前瀏覽到第幾張圖片。簡(jiǎn)易相冊(cè)界面元素結(jié)構(gòu)分解如圖3-2所示。43按鈕圖像視圖信息提示塊(吐司)圖3-2簡(jiǎn)易相冊(cè)界面元素分解圖3.3.2任務(wù)實(shí)施準(zhǔn)備圖像資源首先需要將制作成相冊(cè)的圖像文件拷貝至資源目錄中的drawable文件夾里,如圖3-3所示。其中dog1.jpg~dog5.jpg是相冊(cè)圖像,next.jpg和previous.jpg是按鈕背景圖。44圖3-3圖片資源文件位置創(chuàng)建AlbumActivity.java文件1 importandroid.support.v7.app.AppCompatActivity;2 importandroid.os.Bundle;3 importandroid.view.View;4 importandroid.widget.Button;5 importandroid.widget.ImageView;6 importandroid.widget.Toast;7 8 publicclassAlbumActivityextendsAppCompatActivity{9 privateButtonbtnNext;4510 privateButtonbtnPrevious;11 privateImageViewivPhoto;12 inti=0;13 int[]PhotoIDs=newint[]{14 R.drawable.dog1,R.drawable.dog2,R.drawable.dog3,R.drawable.dog4,R.drawable.dog515 };16 17 @Override18 protectedvoidonCreate(BundlesavedInstanceState){19 super.onCreate(savedInstanceState);20 setContentView(R.layout.activity_album);21 initComponent();22 }23 24 privatevoidinitComponent(){25 ivPhoto=(ImageView)findViewById(R.id.ivPhoto);26 btnPrevious=(Button)findViewById(R.id.btnPrevious);27 //綁定偵聽“上一頁(yè)”單擊事件28 btnPrevious.setOnClickListener(newView.OnClickListener(){29 @Override//“上一頁(yè)”單擊事件的實(shí)現(xiàn)31 publicvoidonClick(Viewarg0){32 i--;33 if(i<0){34 i=PhotoIDs.length-1;4635 }36 Toasttoast=Toast.makeText(AlbumActivity.this,"第"+(i+1)+"張",Toast.LENGTH_SHORT);37 toast.show();38 ivPhoto.setImageResource(PhotoIDs[i]);39 }40 });41 42 btnNext=(Button)findViewById(R.id.btnNext);43 //綁定偵聽“下一頁(yè)”單擊事件44 btnNext.setOnClickListener(newView.OnClickListener(){45 @Override46 //“下一頁(yè)”單擊事件的實(shí)現(xiàn)47 publicvoidonClick(Viewarg0){48 i++;49 if(i>=PhotoIDs.length){50 i=0;51 }52 Toasttoast=Toast.makeText(AlbumActivity.this,"第"+(i+1)+張",Toast.LENGTH_SHORT);53 toast.show();54 ivPhoto.setImageResource(PhotoIDs[i]);55 }56 });57 }58 }47關(guān)鍵代碼解析:1) 第9-15行代碼,聲明2個(gè)按鈕變量,1個(gè)圖像視圖變量,1個(gè)全局計(jì)數(shù)變量和1個(gè)存放圖像資源的數(shù)組變量。2) 第20行代碼,為當(dāng)前AlbumActivity.java文檔綁定layout資源中的界面布局文件“activity_album.xml”。3) 第21行代碼,調(diào)用初始化界面元素的函數(shù)。4) 第24-55行代碼,定義初始化界面元素函數(shù)。5) 第25,26,42行代碼,分別為查找布局文件中定義的1個(gè)ImageView和2個(gè)Button對(duì)象,與9-11行定義的變量關(guān)聯(lián)并實(shí)例化。6) 第27-40行代碼,綁定并實(shí)現(xiàn)“上一頁(yè)”的單擊偵聽事件。事件處理的邏輯流程如圖3-4所示。7) 第43-56行代碼,綁定并實(shí)現(xiàn)“下一頁(yè)”的單擊偵聽事件。事件處理的邏輯流程如圖3-5所示。圖3-4“上一頁(yè)”程序流程圖圖3-5“下一頁(yè)”程序流程圖48

在activity_album.xml中布局界面1 <?xmlversion="1.0"encoding="utf-8"?>2 <RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"3 android:layout_width="match_parent"4 android:layout_height="match_parent"5 android:paddingBottom="@dimen/activity_vertical_margin"6 android:paddingLeft="@dimen/activity_horizontal_margin"7 android:paddingRight="@dimen/activity_horizontal_margin"8 android:paddingTop="@dimen/activity_vertical_margin"9 tools:context="ject03.AlbumActivity">10 11 <Button12 android:id="@+id/btnPrevious"13 android:layout_width="wrap_content"14 android:layout_height="wrap_content"15 android:background="@drawable/previous"/>16 17 <Button18 android:id="@+id/btnNext"19 android:layout_width="wrap_content"20 android:layout_height="wrap_content"21 android:layout_alignParentRight="true"22 android:background="@drawable/next"/>23 4924 <ImageView25 android:id="@+id/ivPhoto"26 android:layout_width="wrap_content"27 android:layout_height="450sp"28 android:layout_below="@id/btnPrevious"29 android:layout_centerHorizontal="true"30 android:src="@drawable/dog1"/>31 32 </RelativeLayout>關(guān)鍵代碼解析:1) 第2-9行代碼,相對(duì)布局及其屬性設(shè)置。2) 第11-15行代碼,“上一頁(yè)”按鈕及其屬性設(shè)置。其中第15行的背景圖像設(shè)置把按鈕的默認(rèn)樣式替換成了圖像內(nèi)容。3) 第17-22行代碼,“下一頁(yè)”按鈕及其屬性設(shè)置。其中第22行代碼作用與第15行相同。4) 第24-30行代碼,相冊(cè)中的圖像視圖。其中第29行設(shè)置圖像視圖為居中顯示,第30行設(shè)置默認(rèn)顯示第1張圖像。5) 第28行代碼,相對(duì)布局時(shí),設(shè)置圖像元素位于“下一頁(yè)”按鈕的下面。

修改manifests.xml文件配置1 <?xmlversion="1.0"encoding="utf-8"?>2 <manifestxmlns:android="/apk/res/android"3 package="android.book">4 5 <application6 android:allowBackup="true"7 android:icon="@mipmap/ic_launcher"8 android:label="@string/app_name"509 android:supportsRtl="true"10 android:theme="@style/AppTheme">11 12 <activityandroid:name=".MainActivity">13 </activity>14 15 <activityandroid:name=".AlbumActivity"16 android:theme="@style/Theme.AppCompat.DayNight">17 <intent-filter>18 <actionandroid:name="ent.action.MAIN"/>19 20 <categoryandroid:name="ent.category.LAUNCHER"/>21 </intent-filter>22 </activity>23 </application>24 25 </manifest>關(guān)鍵代碼解析:1) 第16行代碼,為“AlbumActivity”文件設(shè)置樣式,選用了黑色系默認(rèn)樣式。2) 第17-21行代碼,過(guò)濾配置出“AlbumActivity”為APP啟動(dòng)首頁(yè)文件。51項(xiàng)目四

安卓考試52項(xiàng)目四:安卓考試4.1項(xiàng)目介紹

用手機(jī)進(jìn)行考試是比較方便的事情。本項(xiàng)目開發(fā)能在Android系統(tǒng)中進(jìn)行考試的APP,包括填空題、單選題、多選題。4.2相關(guān)知識(shí)4.2.1RadioGroup(單選按鈕組)和RadioButton(單選按鈕)RadioGroup是RadioButton的容器。如果我們選中一個(gè)單選按鈕屬于一個(gè)單選按鈕組,它會(huì)自動(dòng)取消選中同一組內(nèi)的任何先前檢查的單選按鈕。每個(gè)RadioGroup中的RadioButton同時(shí)只能有一個(gè)被選中。表4-1RadioButton屬性屬性描述android:checked控件是否選中android:button設(shè)置一張圖片來(lái)作為顯示android:buttonTint渲染顏色android:buttonTintMode渲染模式53表4-2RadioButton重要的方法表

4-3RadioGroup屬性方法描述isChecked()控件是否選中voidsetChecked(booleanchecked)

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論