Android平臺(tái)應(yīng)用軟件開發(fā) 課件全套 第1-12章 緒論、Android開發(fā)環(huán)境搭建- 項(xiàng)目實(shí)戰(zhàn) 天氣預(yù)報(bào)_第1頁
Android平臺(tái)應(yīng)用軟件開發(fā) 課件全套 第1-12章 緒論、Android開發(fā)環(huán)境搭建- 項(xiàng)目實(shí)戰(zhàn) 天氣預(yù)報(bào)_第2頁
Android平臺(tái)應(yīng)用軟件開發(fā) 課件全套 第1-12章 緒論、Android開發(fā)環(huán)境搭建- 項(xiàng)目實(shí)戰(zhàn) 天氣預(yù)報(bào)_第3頁
Android平臺(tái)應(yīng)用軟件開發(fā) 課件全套 第1-12章 緒論、Android開發(fā)環(huán)境搭建- 項(xiàng)目實(shí)戰(zhàn) 天氣預(yù)報(bào)_第4頁
Android平臺(tái)應(yīng)用軟件開發(fā) 課件全套 第1-12章 緒論、Android開發(fā)環(huán)境搭建- 項(xiàng)目實(shí)戰(zhàn) 天氣預(yù)報(bào)_第5頁
已閱讀5頁,還剩509頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章緒論第1章緒論Android操作系統(tǒng)簡介軟件系統(tǒng)架構(gòu)第1章緒論1.1

Android操作系統(tǒng)簡介隨著手機(jī)硬件技術(shù)和移動(dòng)網(wǎng)絡(luò)技術(shù)的發(fā)展,手機(jī)的功能已不僅僅拘泥于單純的打電話、發(fā)短信,還具有了多媒體播放、高速網(wǎng)絡(luò)瀏覽、GPS定位、無線連接甚至更多的功能。隨著移動(dòng)通信技術(shù)的飛速發(fā)展和移動(dòng)互聯(lián)時(shí)代的到來,手機(jī)作為人們必備的移動(dòng)通信工具,已從簡單的通話工具演變成一個(gè)移動(dòng)的個(gè)人信息收集和處理的平臺(tái)。借助操作系統(tǒng)和豐富的應(yīng)用軟件,手機(jī)成了一臺(tái)智能移動(dòng)終端。第1章緒論市場(chǎng)上流行的智能手機(jī)操作系統(tǒng)有Symbian

OS、Android

OS、Windows

Phone、iOS、Blackberry等。其中Android

OS和iOS系統(tǒng)不僅僅在智能手機(jī)市場(chǎng)份額中遙遙領(lǐng)先,而且這種優(yōu)勢(shì)仍在不斷增加。根據(jù)全球領(lǐng)先的移動(dòng)互聯(lián)網(wǎng)第三方數(shù)據(jù)挖掘與整合營銷機(jī)構(gòu)艾媒咨詢數(shù)據(jù)顯示,2012年中國智能手機(jī)市場(chǎng)Android

OS份額達(dá)到68.6%,占據(jù)絕對(duì)主流地位。第1章緒論Android英文原意為“機(jī)器人”。2003年AndyRubin在美國創(chuàng)辦了一家名為Android的公司,其主要經(jīng)營業(yè)務(wù)為手機(jī)軟件和手機(jī)操作系統(tǒng)。2005年Google公司收購了Android公司。此后Google公司與摩托羅拉、中國移動(dòng)、宏達(dá)、高通和T-Mobile等30多家無線通信領(lǐng)軍企業(yè)組成了開放手機(jī)聯(lián)盟,合作開發(fā)基于Linux的開源手機(jī)操作系統(tǒng),并于2007年11月5日正式推出了基于Linux

2.6標(biāo)準(zhǔn)內(nèi)核的開源手機(jī)操作系統(tǒng),命名為Android。第1章緒論1.1.1

Android平臺(tái)的特性1.采用Java語言Java是一種面向?qū)ο蟮恼Z言,可以在很多設(shè)備和操作系統(tǒng)上使用,學(xué)習(xí)起來比較容易,上手比較快。而且學(xué)習(xí)Java語言可以幫助開發(fā)者更好地了解其他操作系統(tǒng)的應(yīng)用開發(fā)過程,起到一通皆通的效果。2.可移植性好Android應(yīng)用程序使用Java編程語言開發(fā),因?yàn)镴ava語言的跨平臺(tái)性,Android應(yīng)用程序能夠很容易地移植到其他移動(dòng)操作系統(tǒng)上。第1章緒論良好的開發(fā)環(huán)境谷歌公司為Android開發(fā)者營造了良好的開發(fā)環(huán)境。Android

Studio開發(fā)工具有利于開發(fā)者為Android系統(tǒng)開發(fā)新的應(yīng)用和游戲,該工具的開發(fā)環(huán)境和模式非常豐富和便捷,可以為開發(fā)者提供相關(guān)的測(cè)試工具和各種數(shù)據(jù)分析。開發(fā)門檻低想要為iOS操作系統(tǒng)開發(fā)一款應(yīng)用,首先開發(fā)者得有一臺(tái)Mac電腦。而Android應(yīng)用開發(fā)者在Windows、Mac還有

Linux操作系統(tǒng)上都能完成Android應(yīng)用程序的開發(fā)工作。第1章緒論5.市場(chǎng)份額2014年年底的數(shù)據(jù)統(tǒng)計(jì)顯示全球有16億的Android用戶,與此同時(shí),iOS用戶只有3億,而Blackberry以及其他移動(dòng)操作系統(tǒng)的用戶數(shù)量加起來只有9100萬。對(duì)于開發(fā)者而言,用戶數(shù)量是影響應(yīng)用程序使用量最直接、最重要的因素。第1章緒論6.盈利能力Google是互聯(lián)網(wǎng)公司,靠服務(wù)掙錢;而Apple是設(shè)備商,靠設(shè)備去賺錢。Apple要做的是Apple認(rèn)為最人性化的設(shè)備,Apple的軟件是為Apple的設(shè)備服務(wù)的。因此iPhone平臺(tái)中很多游戲和應(yīng)用都是收費(fèi)的。但是Android不同,Android平臺(tái)的大多數(shù)應(yīng)用和游戲都是免費(fèi)的,因此在Android平臺(tái)中,會(huì)有更多的用戶愿意去嘗試新的應(yīng)用和游戲,其盈利多來自應(yīng)用和游戲中的廣告。這種模式更容易被用戶接受。第1章緒論1.1.2

Android系統(tǒng)架構(gòu)Android是一個(gè)開放源代碼的操作系統(tǒng)。Android和其操作系統(tǒng)一樣,采用了分層架構(gòu)。從架構(gòu)圖看,Android分為四層,從高層到低層分別是應(yīng)用程序?qū)?APPLICATIONS)、應(yīng)用程序框架層(APPLICATION

FRAMEWORK)、系統(tǒng)庫層(LIBRARIES)和Linux核心層(LINUX

KERNEL),如圖1-1所示。第1章緒論圖1-1

Android系統(tǒng)構(gòu)架圖第1章緒論應(yīng)用程序?qū)覣ndroid操作系統(tǒng)發(fā)布時(shí),系統(tǒng)中就包含了一系列核心應(yīng)用程序包,包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。應(yīng)用程序框架層Android的應(yīng)用程序框架為應(yīng)用程序?qū)拥拈_發(fā)者提供了簡單方便的API框架,應(yīng)用程序?qū)拥拈_發(fā)者可以使用該層提供的API開發(fā)出自己的應(yīng)用程序。第1章緒論3.系統(tǒng)庫層和Android運(yùn)行環(huán)境Android的系統(tǒng)庫層分成兩個(gè)部分,一個(gè)是系統(tǒng)包含的各種庫,另一個(gè)是Android運(yùn)行環(huán)境。系統(tǒng)庫包括九個(gè)使用庫,分別是圖層管理(SurfaceManager)、媒體庫(Media

Framework)、SQLite、OpenGL|ES、FreeType、WebKit、SGL、SSL和libc。這些庫能被Android系統(tǒng)中不同的組件使用。它們大多是使用C和C++實(shí)現(xiàn)的,可以通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。第1章緒論Android運(yùn)行環(huán)境主要指的是虛擬機(jī)技術(shù)——Dalvik。Dalvik虛擬機(jī)和一般Java虛擬機(jī)不同,Dalvik虛擬機(jī)執(zhí)行擴(kuò)展名為dex的Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。第1章緒論4.Linux核心層Linux操作系統(tǒng)具有一些重要的特點(diǎn),首先是開源,其次強(qiáng)大的內(nèi)存管理和進(jìn)程管理方案、基于權(quán)限的安全模式、經(jīng)過認(rèn)證的驅(qū)動(dòng)模型等特征都非常符合移動(dòng)平臺(tái)的要求,因此Android系統(tǒng)選擇采用Linux內(nèi)核。雖然Android采用了Linux內(nèi)核,但也根據(jù)移動(dòng)平臺(tái)特征對(duì)Linux內(nèi)核系統(tǒng)做了一些改動(dòng)。例如Android并沒有采用glibc作為C庫,而是采用Google自己開發(fā)的一套Bionic

Libc來代替glibc。此外,Android還對(duì)Linux設(shè)備驅(qū)動(dòng)進(jìn)行了增強(qiáng)等。第1章緒論1.2軟件系統(tǒng)架構(gòu)隨著網(wǎng)絡(luò)的發(fā)展,越來越多的商業(yè)系統(tǒng)被搬上Internet,一種新的、更具生命力的體系結(jié)構(gòu)被廣泛采用,這就是我們熟知的“三層/多層體系結(jié)構(gòu)”,也就是我們常說的B/S機(jī)構(gòu)。三層體系結(jié)構(gòu)中,客戶層是用戶接口和用戶請(qǐng)求的發(fā)出地,典型的應(yīng)用是網(wǎng)絡(luò)瀏覽器;服務(wù)器層是負(fù)責(zé)處理客戶層提交請(qǐng)求的計(jì)算機(jī),典型的應(yīng)用是Web服務(wù)器和運(yùn)行業(yè)務(wù)代碼的

應(yīng)用程序服務(wù)器;數(shù)據(jù)層是為整個(gè)軟件系統(tǒng)提供數(shù)據(jù)的數(shù)據(jù)源基地,典型的應(yīng)用是關(guān)系型數(shù)據(jù)庫和其他后端數(shù)據(jù)資源,如Oracle、SAP、R/3等。第1章緒論1.2.1

C/S結(jié)構(gòu)C/S結(jié)構(gòu),即Client/Server(客戶機(jī)/服務(wù)器)結(jié)構(gòu)。此結(jié)構(gòu)把數(shù)據(jù)庫內(nèi)容放在遠(yuǎn)程的服務(wù)器上,而在客戶機(jī)上安裝了相

應(yīng)軟件。C/S軟件一般采用兩層結(jié)構(gòu),由兩部分構(gòu)成:前端是客戶機(jī),即用戶界面(Client)結(jié)合了表示與業(yè)務(wù)邏輯,接收用戶的請(qǐng)求,并向數(shù)據(jù)庫服務(wù)提出請(qǐng)求,通常是一個(gè)PC;后端是服務(wù)器,即數(shù)據(jù)管理(Server)將數(shù)據(jù)提交給客戶端,客戶端將數(shù)據(jù)進(jìn)行計(jì)算并將結(jié)果呈現(xiàn)給用戶,還要提供完善的安全保護(hù)及對(duì)數(shù)據(jù)的完整性處理等操作,并允許多個(gè)客戶同時(shí)訪問同一個(gè)數(shù)據(jù)庫。第1章緒論C/S結(jié)構(gòu)在技術(shù)上很成熟,它的主要特點(diǎn)是交互性強(qiáng)、具有安全的存取模式、網(wǎng)絡(luò)通信量低、響應(yīng)速度快、有利于處理大量數(shù)據(jù)。但是具有該結(jié)構(gòu)的程序的針對(duì)性較強(qiáng),變更不夠靈活,維護(hù)和管理的難度較大,通常只局限于小型局域網(wǎng),不利于擴(kuò)展。并且,由于具有該結(jié)構(gòu)的每臺(tái)客戶機(jī)都需要安裝相應(yīng)的客戶端程序,分布功能弱且兼容性差,不能實(shí)現(xiàn)快速部署安裝和配置,因此缺少通用性,具有較大的局限性,且要求具有一定專業(yè)水準(zhǔn)的技術(shù)人員才能完成。第1章緒論1.2.2

B/S結(jié)構(gòu)B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu)。此結(jié)構(gòu)只安裝維護(hù)一個(gè)服務(wù)器(Server),而客戶端采用瀏覽器(Browse)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化和改進(jìn),主要利用了不斷成熟的WWW(萬維網(wǎng))瀏覽器技術(shù),結(jié)合了多種Script語言(VBScript、javascript等)和ActiveX技術(shù),是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。第1章緒論B/S三層體系結(jié)構(gòu)采用三層客戶/服務(wù)器結(jié)構(gòu),在數(shù)據(jù)管理層(Server)和用戶界面層(Client)增加了一層結(jié)構(gòu),稱為中間件(Middleware),使整個(gè)體系結(jié)構(gòu)成為三層。三層結(jié)構(gòu)是伴隨著中間件技術(shù)的成熟而興起的,核心概念是利用中間件將應(yīng)用分為表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲(chǔ)層三個(gè)不同的處理層次。這三個(gè)層次是從邏輯上劃分的,具體的物理分法可以有多種組合。中間件作為構(gòu)造三層結(jié)構(gòu)應(yīng)用系統(tǒng)的基礎(chǔ)平臺(tái),提供了以下主要功能:負(fù)責(zé)客戶機(jī)與服務(wù)器、服務(wù)器與服務(wù)器間的連接和通信;實(shí)現(xiàn)應(yīng)用與數(shù)據(jù)庫的高效連接;提

供一個(gè)三層結(jié)構(gòu)應(yīng)用的開發(fā)、運(yùn)行、部署和管理的平臺(tái)。這種三層結(jié)構(gòu)在層與層之間相互獨(dú)立,任何一層的改變不會(huì)影響其他層的功能。第1章緒論B/S結(jié)構(gòu)的主要特點(diǎn)是分布性強(qiáng)、維護(hù)方便、開發(fā)簡單、共享性強(qiáng)、總體擁有成本低。但同時(shí),數(shù)據(jù)安全問題顯現(xiàn)、數(shù)據(jù)傳輸速度慢、軟件的個(gè)性化特點(diǎn)明顯降低,且對(duì)服務(wù)器要求過高,這些缺點(diǎn)是顯而易見的,難以實(shí)現(xiàn)傳統(tǒng)模式下的特殊功能要求。例如通過瀏覽器進(jìn)行大量數(shù)據(jù)輸入、報(bào)表的應(yīng)答、專用性打印輸出比較困難,實(shí)現(xiàn)復(fù)雜的應(yīng)用構(gòu)造也有較大的困難。雖然可以用ActiveX、Java等技術(shù)開發(fā)較為復(fù)雜的應(yīng)用,但是相對(duì)于發(fā)展已非常成熟的C/S一系列應(yīng)用工具來說,這些技術(shù)的開發(fā)復(fù)雜,并沒有完全成熟的技術(shù)工具供使用。第1章緒論1.2.3

C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析比較1.硬件環(huán)境不同C/S建立在局域網(wǎng)的基礎(chǔ)上,通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù),所處理的用戶不僅固定,并且處于相同區(qū)域,要求擁有相同的操作系統(tǒng)。B/S建立在廣域網(wǎng)的基礎(chǔ)上,自己管理信息,有比C/S更強(qiáng)的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器就行,與操作系統(tǒng)平臺(tái)關(guān)系較小,面向不可知的用戶群。第1章緒論結(jié)構(gòu)不同C/S軟件一般采用兩層結(jié)構(gòu),而B/S采用三層結(jié)構(gòu)。這兩種結(jié)構(gòu)的不同點(diǎn)是兩層結(jié)構(gòu)中客戶端參與運(yùn)算,而三層結(jié)構(gòu)中客戶端不參與運(yùn)算,只是簡單地接收用戶的請(qǐng)求,顯示最后的結(jié)果。由于三層結(jié)構(gòu)中的客戶端并不需要參與計(jì)算,所以對(duì)客戶端的計(jì)算機(jī)電腦配置要求較低。處理模式不同B/S的處理模式與C/S相比,大大簡化了客戶端,只要裝上操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議軟件以及瀏覽器即可,這時(shí)的客戶機(jī)稱為瘦客戶機(jī),而服務(wù)器則集中了所有的應(yīng)用邏輯。第1章緒論系統(tǒng)維護(hù)不同系統(tǒng)維護(hù)是在軟件生存周期中開銷最大的一部分。C/S

程序由于其本身的整體性,必須整體考察并處理出現(xiàn)的問題,而B/S結(jié)構(gòu)的客戶端不必安裝及維護(hù)。對(duì)安全要求不同由于C/S采用點(diǎn)對(duì)點(diǎn)的配對(duì)結(jié)構(gòu)模式,并采用適用于局域網(wǎng)、安全性比較好的網(wǎng)絡(luò)協(xié)議(例如NT的NetBEUI協(xié)議),安全性可得到較好的保證。C/S一般面向相對(duì)固定的用戶群,程序更加注重流程,它可以對(duì)權(quán)限進(jìn)行多層次校驗(yàn),提供了更安全的存取模式,對(duì)信息安全的控制能力很強(qiáng)。第1章緒論1.2.4軟件系統(tǒng)架構(gòu)總結(jié)通過對(duì)軟件系統(tǒng)架構(gòu)的了解,我們可以得出這樣的結(jié)論,無論采用怎樣的軟件系統(tǒng)架構(gòu),一個(gè)軟件系統(tǒng)的構(gòu)成大體可分為三層:圖形界面層、業(yè)務(wù)邏輯處理層和數(shù)據(jù)層。第一層是圖形界面層,該層的主要作用是提供軟件系統(tǒng)的界面,用來和用戶進(jìn)行交互。這一層主要表現(xiàn)為客戶機(jī)上的客戶端程序,因此這層主要是以客戶端程序的編程語言來實(shí)現(xiàn)的。第1章緒論在B/S結(jié)構(gòu)中,該層主要表現(xiàn)在瀏覽器訪問頁面上,因

此該層主要是以html語言、css、JavaScript語言來實(shí)現(xiàn)的。在Android軟件開發(fā)中,這一層主要是由Android中的四大組件和UI控件來實(shí)現(xiàn)的。軟件系統(tǒng)的最底層是整個(gè)系統(tǒng)的數(shù)據(jù)層,這一層的主要作用是為整個(gè)軟件系統(tǒng)提供需要的數(shù)據(jù)或者對(duì)用戶從圖形界面層傳入的數(shù)據(jù)進(jìn)行保存,無論在C/S結(jié)構(gòu)還是B/S結(jié)構(gòu)中,這一層都是由數(shù)據(jù)庫來實(shí)現(xiàn)的,例如我們常見的MySQL、SQLServer、Oracle等數(shù)據(jù)庫。第1章緒論軟件系統(tǒng)的中間層是業(yè)務(wù)邏輯處理層,該層的主要作用是將用戶界面層中用戶提交的數(shù)據(jù)進(jìn)行處理后存放到數(shù)據(jù)層,或者從數(shù)據(jù)層取得數(shù)據(jù)進(jìn)行處理后提供給圖形界面層使用。這一層主要根據(jù)軟件系統(tǒng)開發(fā)時(shí)所使用的語言來實(shí)現(xiàn)。Android軟件開發(fā)使用的主要工具是Java語言,因此在Android軟件開發(fā)中該層也主要是由Java語言來實(shí)現(xiàn)的。第1章緒論1.Android界面開發(fā)技術(shù)技術(shù)包含的學(xué)習(xí)內(nèi)容主要有以下幾種:Android最常見的五種Layout布局。常用控件。界面美化。第1章緒論2.Android數(shù)據(jù)存儲(chǔ)技術(shù)Android中的數(shù)據(jù)存儲(chǔ)方式主要有四種:SharedPrefereneces存儲(chǔ)方式。文件存儲(chǔ)。SQLite數(shù)據(jù)庫存儲(chǔ)。網(wǎng)絡(luò)存儲(chǔ)數(shù)據(jù)。第1章緒論3.Android中的四大組件Android四大基本組件分別是Activity組件、BroadcastReceiver(廣播接收者)、Service(服務(wù))和ContentProvider(內(nèi)容提供者)。Activity(組件)。在Android應(yīng)用程序中,一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕,它上面可以顯示一些控件,也可以監(jiān)聽并對(duì)用戶的事件做出響應(yīng)。BroadcastReceiver(廣播接收者)。廣播機(jī)制是Android操作系統(tǒng)中一個(gè)非常有用的消息機(jī)制。第1章緒論Service(服務(wù))。Service也是Android系統(tǒng)中的一種重要組件,它跟Activity是同級(jí)別的。ContentProvider(內(nèi)容提供者)。ContentProvider組件可以讓一個(gè)應(yīng)用程序?qū)⒆约旱臄?shù)據(jù)集提供給其他應(yīng)用程序使用。第1章緒論4.Android網(wǎng)絡(luò)編程如今脫網(wǎng)運(yùn)行的Android應(yīng)用程序已不常見,所以網(wǎng)絡(luò)編程是Android軟件開發(fā)中必須掌握的技術(shù)?,F(xiàn)在一般的軟件公司都會(huì)封裝自己的聯(lián)網(wǎng)結(jié)構(gòu),但是基本的聯(lián)網(wǎng)還是要熟悉。第1章緒論第2章Android開發(fā)環(huán)境搭建Android開發(fā)環(huán)境搭建Android程序目錄結(jié)構(gòu)Android開發(fā)的幾個(gè)輔助資源第1章緒論2.1

Android開發(fā)環(huán)境搭建2.1.1搭建環(huán)境工具介紹搭建Android開發(fā)環(huán)境所需的工具軟件有JDK、Eclipse、Android

SDK、ADT插件等,這些工具都可以從相關(guān)網(wǎng)絡(luò)下載。第1章緒論JDKJDK是Java語言的軟件開發(fā)工具包,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的Java應(yīng)用程序。Android開發(fā)語言是基于Java的,所以要做Android的開發(fā)必須安裝JDK,并且對(duì)JDK的版

本有一定的要求,必須是JDK

1.5以上的版本。EclipseEclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件構(gòu)建開發(fā)環(huán)境。第1章緒論Android

SDKSDK是一些被軟件工程師用于為特定的軟件包、軟件框

架、硬件平臺(tái)、操作系統(tǒng)等創(chuàng)建應(yīng)用軟件的開發(fā)工具的集合。ADT插件Android

Development

Tools,簡寫為ADT,是Android的開發(fā)團(tuán)隊(duì)專門針對(duì)Eclipse

IDE定制的一個(gè)插件。第1章緒論2.1.2工具軟件的安裝1.JDK的安裝從解壓以后的文件夾中找到JDK的安裝軟件jdk-8-windows-x64.exe,雙擊該文件進(jìn)入該程序的安裝界面,如圖2-1所示。第1章緒論圖2-1

JDK安裝界面第1章緒論當(dāng)JDK1.8安裝完成以后,進(jìn)行環(huán)境變量的配置,否則JDK環(huán)境不能正常使用。配置方法為:右鍵單擊“我的電腦”,在彈出的快捷菜單中選擇“屬性”選項(xiàng),在彈出的對(duì)話框左欄中選擇高級(jí)系統(tǒng)設(shè)置,在彈出的系統(tǒng)屬性對(duì)話框中選擇高級(jí)標(biāo)簽,如圖2-2所示。第1章緒論圖2-2系統(tǒng)屬性對(duì)話框第1章緒論2.Eclipse的安裝Eclipse軟件不需要安裝。把Eclipse文件的壓縮包解壓后即可得到Eclipse的可執(zhí)行文件,復(fù)制Eclipse文件夾到你想安

裝的地方,雙擊eclipse.exe可執(zhí)行文件即可。文件夾中

Eclipse的壓縮包文件是eclipse-jee-luna-R-win32-x86_64.rar件。第1章緒論3.安裝插件ADT運(yùn)行Eclipse軟件,點(diǎn)擊菜單欄中的help菜單,選擇Install

New

Software命令,彈出安裝軟件的界面,如圖2-3所示。第1章緒論圖2-3安裝ADT插件界面第1章緒論安裝過程中注意兩點(diǎn):①圖2-3界面中Location上方的Name對(duì)話框可以不填寫。②因?yàn)槲覀兪菑谋镜匕惭bADT插件,所有一定取消下方的Contact

all

update

sites

during

install

to

find

requiredsoftware的勾選狀態(tài)。如果勾選,表明從網(wǎng)絡(luò)上獲取ADT的插件包,安裝會(huì)比較慢。第1章緒論4.配置Android

SDK從“開發(fā)所需工具”文件夾中找到Android

SDK的壓縮包文件android-sdk4.0-5.0.rar,進(jìn)行解壓縮。本書自帶的Android

SDK都是將常用API

Level全部下載的壓縮包,因此解壓后的目錄結(jié)構(gòu)如圖2-4所示。第1章緒論圖2-4

Android

SDK解壓目錄第1章緒論Android

SDK目錄下有很多文件夾,各部分的作用大致如下:add-ons里面保存著附加庫,比如GoogleMaps,當(dāng)然如果安裝了OphoneSDK,也會(huì)有一些類庫在里面。docs里面是Android

SDK

API參考文檔,所有的API都可以在這里查到。platforms是每個(gè)平臺(tái)的SDK真正的文件,里面會(huì)根據(jù)API

Level劃分SDK版本。platform-tools保存著一些通用工具,比如adb、aapt、aidl和dx等文件。第1章緒論samples是Android

SDK自帶的默認(rèn)示例工程,強(qiáng)烈推薦初學(xué)者運(yùn)行學(xué)習(xí)。sources是Android源代碼目錄。tools作為SDK根目錄下的tools文件夾,里面包含了重要的工具。啟動(dòng)Eclipse,點(diǎn)擊菜單欄中的Windows菜單,選擇Preferences命令,彈出Preferences對(duì)話框,如圖2-5所示。在Preferences對(duì)話框中雙擊Android選項(xiàng),在SDK

Location對(duì)話框中指定解壓的SDK的目錄即可完成Android

SDK的配置。第1章緒論圖2-5

Android

SDK解壓目錄第1章緒論2.1.3

Android模擬器的創(chuàng)建運(yùn)行SDK目錄中的AVD

Manager.exe文件,即可彈出Android模擬器創(chuàng)建界面,如圖2-6所示。第1章緒論圖2-6

Android模擬器的創(chuàng)建界面第1章緒論此界面中點(diǎn)擊Create按鈕,便可創(chuàng)建一個(gè)新的安卓虛擬機(jī)。在創(chuàng)建界面中,AVD

Name文本框?yàn)閯?chuàng)建的安卓虛擬機(jī)名字,Device文本框?yàn)閯?chuàng)建的虛擬機(jī)設(shè)備型號(hào),TargetName文本框?yàn)閯?chuàng)建的虛擬機(jī)SDK的版本,Skin文本框?yàn)閯?chuàng)

建的虛擬機(jī)界面大小,一般使用HVGA進(jìn)行調(diào)試,MemoryOptions文本框?yàn)樘摂M機(jī)分配的運(yùn)行內(nèi)存,SD

Card文本框?yàn)樘摂M機(jī)模擬SD卡的大小。模擬器創(chuàng)建完成后,選中我們剛剛創(chuàng)建的虛擬機(jī),選擇Start→Lunch按鈕便可將我們創(chuàng)建的模擬器運(yùn)行起來。第1章緒論2.2

Android程序目錄結(jié)構(gòu)2.2.1

HelloWorld程序啟動(dòng)Eclipse軟件,在Eclipse界面中左邊的PackageExplorer標(biāo)簽下單擊右鍵,選擇New→Android

ApplicationProject菜單命令,即可彈出創(chuàng)建Android項(xiàng)目對(duì)話框,如圖2-7所示。第1章緒論圖2-7

Android項(xiàng)目創(chuàng)建界面第1章緒論在此界面中,我們將Application

Name和Project

Name均設(shè)為hello,Minimum

Required

SDK設(shè)置為Android

2.2,Target

SDK和Compile

With設(shè)置為Android

4.X,Theme默認(rèn),然后點(diǎn)擊Next按鈕,直到項(xiàng)目創(chuàng)建完成?;氐紼clipse,我們可以看到左側(cè)Package

Explorer標(biāo)簽下包含一個(gè)名為hello的項(xiàng)目包。右鍵點(diǎn)擊我們剛剛創(chuàng)建的項(xiàng)目hello,在彈出的快捷菜單中選擇Run

As→Android

Application命令項(xiàng),將此項(xiàng)目部署到Android的模擬器中。在模擬器中我們看到了如圖2-8所示的界面。第1章緒論圖2-8

hello項(xiàng)目界面第1章緒論2.2.2

Android程序目錄結(jié)構(gòu)打開剛剛建立的hello項(xiàng)目,會(huì)發(fā)現(xiàn)其目錄由src、gen、assets、bin、res文件夾和AndroidManifest.xml、perties、proguard.cfg文件構(gòu)成,如圖2-9所示。第1章緒論圖2-9

hello項(xiàng)目目錄結(jié)構(gòu)第1章緒論1.src文件夾src,source

code的縮寫,顧名思義該文件夾是存放Android項(xiàng)目源代碼程序的文件夾。在hello項(xiàng)目中,Eclipse自動(dòng)為我們生成了一個(gè)名為MainActivity.java的源代碼程序,打開該程序,可以看到如下的代碼。第1章緒論第1章緒論2.gen文件夾該文件夾下面有個(gè)R.java文件,R.java是在建立項(xiàng)目時(shí)自動(dòng)生成的,這個(gè)文件是只讀的,不能更改,人為更改后系統(tǒng)也會(huì)自動(dòng)恢復(fù)。R.java文件中定義了一個(gè)類R,R類中包含很多靜態(tài)類,靜態(tài)類的名字與res文件夾中的每個(gè)子文件夾名字一一對(duì)應(yīng),而且每個(gè)靜態(tài)類中的靜態(tài)整型變量和res文件夾中的每個(gè)子文件夾又一一對(duì)應(yīng),如圖2-10所示。第1章緒論圖2-10

R類與res文件夾對(duì)應(yīng)顯示第1章緒論3.res文件夾res文件夾是Android項(xiàng)目的資源文件夾,向此目錄添加資源時(shí),會(huì)被R.java文件自動(dòng)記錄。新建一個(gè)項(xiàng)目時(shí),res文件夾下會(huì)有三個(gè)子文件夾:drawable、layout、values。

drawable文件夾存放項(xiàng)目的圖片資源,layout文件夾存放項(xiàng)

目的界面布局文件,values文件夾中string.xml文件存放項(xiàng)目所需要的各種文字資源。這個(gè)文件夾還可以存放多個(gè)*.xml

文件,這些文件用來存放不同類型的數(shù)據(jù),例如arrays.xml、

colors.xml、dimens.xml、styles.xml等。第1章緒論bin文件夾bin文件夾用于存放項(xiàng)目編譯后的資源。在這里可以找到編譯好的.apk文件和其他編譯好的資源。assets文件夾assets文件夾也是存放項(xiàng)目原始資源的文件夾,但它和res文件夾的不同之處在于,assets文件夾支持任意深度的子文件夾。第1章緒論6.AndroidManifest.xml文件AndroidManifest.xml文件是一個(gè)xml文件,我們知道xml文件的作用一般是通過標(biāo)簽存放數(shù)據(jù),AndroidManifest.xml中存放的也是數(shù)據(jù),只不過這些數(shù)據(jù)是關(guān)于Android項(xiàng)目的配置數(shù)據(jù),所有的AndroidManifest.xml文件是Android項(xiàng)目的總配置文件,文件中記錄著項(xiàng)目中用到的各種組件、確定Android項(xiàng)目實(shí)際功能使用的用戶權(quán)限等信息。第1章緒論Activity是Android組件中最基本也是最為常見的一種組件,其主要作用是提供一個(gè)屏幕,用來與用戶進(jìn)行交互從而

完成某項(xiàng)任務(wù)。在一個(gè)Android應(yīng)用中,一個(gè)Activity通常就是一個(gè)單獨(dú)的屏幕,它上面可以顯示一些控件也可以監(jiān)聽與

處理用戶的事件并做出響應(yīng)。有兩個(gè)方法是幾乎所有的Activity子類都能夠?qū)崿F(xiàn)的:一是onCreate()方法,該方法中一般是初始化Activity,例如調(diào)用setContentView()方法定義Activity的布局;二是onPause()方法,該方法一般是Activity要失去焦點(diǎn)時(shí)觸發(fā)的方法,用戶在該界面做的所有改變一般

都在這個(gè)方法中提交。第1章緒論2.2.3第一個(gè)自己設(shè)計(jì)界面的Android程序啟動(dòng)Eclipse軟件,新建一個(gè)Android項(xiàng)目,命名為demo_01,目錄結(jié)構(gòu)如圖2-11所示。新建項(xiàng)目過程已在前面做了詳細(xì)介紹,這里不再說明。雙擊打開layout文件夾中的布局文件main.xml,在

Eclipse軟件的編輯區(qū)域會(huì)顯示出編輯狀態(tài)下的main.xml文件,同時(shí)在main.xml文件的左面顯示出Android系統(tǒng)UI控件的容器Palette,如圖2-12所示。第1章緒論圖2-11

demo_01項(xiàng)目目錄結(jié)構(gòu)第1章緒論圖2-12

main.xml文件編輯界面第1章緒論本例中我們從palette容器中將一個(gè)TextView控件、View控件、ImageView控件、EditText控件和一個(gè)Button控件放置在main.xml文件中,在main.xml文件的代碼模式下修改各個(gè)控件的屬性,代碼如下:第1章緒論第1章緒論第1章緒論設(shè)置完成后,將案例部署運(yùn)行在Android的模擬器上,運(yùn)行界面如圖2-13所示。圖2-13

demo_01項(xiàng)目運(yùn)行界面第1章緒論2.3

Android開發(fā)的幾個(gè)輔助資源2.3.1

Android

SDK的API文檔Android

SDK中的API文檔是我們做Android開發(fā)最好的幫助文檔。進(jìn)入Android

SDK的安裝目錄,通過在\docs目錄下的index.html文件就可以打開API幫助文檔。該文檔是谷歌公司官方提供的幫助文檔,非常全面而且權(quán)威,在開發(fā)中遇到的所有問題都可以在其中尋求幫助。幫助界面如圖2-14所示。第1章緒論圖2-14

API幫助界面第1章緒論2.3.2

Dalvik

Debug

Monitor

ServiceDalvik

Debug

Monitor

Service,簡稱DDMS,也是一個(gè)Android開發(fā)的好幫手,通過它可以查看運(yùn)行的設(shè)備或者模擬器。安裝ADT插件時(shí)會(huì)自動(dòng)安裝DDMS,通過Eclipse的菜單命令Window→Open

Perspective→DDMS就可以啟動(dòng)DDMS。DDMS整體界面如圖2-15所示。第1章緒論圖2-15

DDMS界面第1章緒論通過Devices界面可以查看模擬器或者手機(jī)上正在運(yùn)行的所有進(jìn)程。其界面如圖2-16所示。圖2-16

Devices界面第1章緒論EmulatorControl主要是模擬為開發(fā)手機(jī)的功能服務(wù),例如模擬打進(jìn)一個(gè)電話、發(fā)出一條短信或者手機(jī)定位等。其界面如圖2-17所示。圖2-17

Emulator

Control界面第1章緒論FileExplorer是文件瀏覽器,通過它可以查看Android模擬器或者手機(jī)上的文件,并且可以方便地在Android模擬器、手機(jī)與PC間導(dǎo)入或者導(dǎo)出文件。其界面如圖2-18所示。第1章緒論圖2-18

File

Explorer界面第1章緒論LogCat界面如圖2-19所示。LogCat是Android程序調(diào)試

或輸出的重要輔助工具,它是一款非常優(yōu)秀的日志管理工具,能夠分級(jí)別地輸出調(diào)試信息。在DDMS中,將LogCat日志分成5個(gè)級(jí)別,分別是Verbose、Debug、Info、Warn、Error。第1章緒論圖2-19LogCat界面第1章緒論2.3.3

ADB命令行工具ADB命令行工具也是Android開發(fā)中的一款調(diào)試工具,它同樣可以用于管理模擬器和手機(jī)。ADB命令行工具的主要工作包括查詢模擬器和手機(jī)、進(jìn)入Shell、導(dǎo)入導(dǎo)出文件、應(yīng)用程序打包和卸載、查看日志等。ADB命令使用舉例:通過ADB查看連接設(shè)備,查看示例和命令如圖2-20所示。第1章緒論圖2-20

ADB查詢?cè)O(shè)備命令第1章緒論進(jìn)入adb

shell,使用命令查看連接設(shè)備中用戶已經(jīng)安裝的Android程序,如圖2-21所示。圖2-21進(jìn)入adb

shell,查看安裝程序的命令第1章緒論第3章Android中的五種布局五種布局概念介紹五種布局案例第1章緒論3.1五種布局概念介紹Android布局是開發(fā)應(yīng)用界面重要的一環(huán),在Android中,共有五種布局方式,分別是:LinearLayout(線性布局),RelativeLayout(相對(duì)布局),F(xiàn)rameLayout(幀布局),AbsoluteLayout(絕對(duì)布局),TableLayout(表格布局)。另外,在Android軟件開發(fā)中,無論是采用何種布局,布局之中可以嵌套布局,以達(dá)到容易控制UI控件位置或美化界面的目的。第1章緒論LinearLayout(線性布局):線性布局,顧名思義,就是布局文件中所有的UI控件只能是橫向或者縱向一條線一樣的排列。RelativeLayout(相對(duì)布局):相對(duì)布局按照各控件元素之間的位置關(guān)系完成布局。FrameLayout(幀布局):幀布局是五大布局中最簡單的一個(gè)布局,在這個(gè)布局中,整個(gè)界面被當(dāng)成一塊空白備用區(qū)域,所有的控件元素都不能被放置到指定的位置,它們統(tǒng)統(tǒng)放于這塊區(qū)域的左上角,并且后面放入的控件元素直接覆蓋在前面放入的控件元素之上,將前面的子元素部分或全部遮擋。第1章緒論TableLayout(表格布局):表格布局適用于多行多列的布局格式,每個(gè)TableLayout是由多個(gè)TableRow組成,一個(gè)TableRow就表示表格布局中的一行,每一行可以由多個(gè)控

件元素組成。實(shí)際上TableLayout和TableRow都是LineLayout線性布局的子類。AbsoluteLayout(絕對(duì)布局):絕對(duì)布局又可以叫做坐標(biāo)布局,可以直接指定子元素的絕對(duì)位置,這種布局簡單直接,直觀性強(qiáng),但由于手機(jī)屏幕尺寸差別比較大,使用絕對(duì)布局的適應(yīng)性會(huì)比較差,可以使用相對(duì)布局替代。第1章緒論3.2五種布局案例3.2.1線性布局案例創(chuàng)建線性布局案例之前,我們先來看看線性布局案例的運(yùn)行結(jié)果,線性布局案例運(yùn)行后的效果圖如圖3-1所示。第1章緒論圖3-1線性布局運(yùn)行界面第1章緒論打開main.xml文件進(jìn)行布局設(shè)置,整個(gè)界面采用垂直線性布局,切換到代碼模式界面下,利用android:background屬性將界面背景設(shè)置為bg.jpg圖片,返回main.xml文件的界面模式下,從palette容器中拖動(dòng)一個(gè)圖片控件ImageView放置在界面的上部,利用android:src屬性設(shè)置圖片控件的數(shù)據(jù)源為top.jpg圖片;拖動(dòng)三個(gè)橫向的線性布局放置在界面的中部,在前兩個(gè)橫向線性布局中各放置一個(gè)TextView控件和一個(gè)EditText控件,第三個(gè)橫向線性布局中放置兩個(gè)Button控件,并設(shè)置該線性布局為水平居中對(duì)齊;拖動(dòng)一個(gè)圖片控件ImageView放置在界面的下部,數(shù)據(jù)源設(shè)置為foot.jpg圖片。這個(gè)界面的控件布局結(jié)構(gòu)如圖3-2所示。第1章緒論圖3-2線性布局結(jié)構(gòu)第1章緒論3.2.2相對(duì)布局案例在Android軟件開發(fā)中,有時(shí)候我們需要把UI控件布置在界面上某一個(gè)具體的位置,例如本例中按鈕二我們要布置到界面中的右下角,而按鈕一緊靠在按鈕二的左邊,如圖3-3所示。這樣的場(chǎng)景采用線性布局不太容易實(shí)現(xiàn)或者雖然能夠?qū)崿F(xiàn)但按鈕位置的定位不是特別準(zhǔn)確。因此在這種情況下我們采用相對(duì)布局就比較方便,相對(duì)布局中有一些特定的屬性會(huì)幫助我們準(zhǔn)確定位。第1章緒論圖3-3相對(duì)布局運(yùn)行界面第1章緒論現(xiàn)在開始項(xiàng)目制作,新建一個(gè)Android項(xiàng)目,命名為relativeLayout,注意在新建一個(gè)Android項(xiàng)目時(shí),Eclipse軟件幫我們自動(dòng)創(chuàng)建的main.xml布局文件都采用的是線性布局,因此我們需要手工將其改為相對(duì)布局,打開main.xml文件,切換到代碼模式界面下,將LinearLayout標(biāo)簽改為RelativeLayout,切換到main.xml文件的界面模式下,從

palette容器中拖動(dòng)兩個(gè)按鈕控件放到main.xml文件中,然后在main.xml文件的代碼模式中修改按鈕屬性進(jìn)行準(zhǔn)確定位。第1章緒論第1章緒論3.2.3幀布局案例Android軟件開發(fā)中,還有一些場(chǎng)景需要我們將一個(gè)UI控件疊加在另外一個(gè)UI控件的上面,例如在播放視頻的過程中,點(diǎn)擊屏幕會(huì)彈出一個(gè)暫停按鈕,這個(gè)暫停按鈕控件就懸浮在視頻播放控件的上面,如圖3-4所示,這種場(chǎng)景的實(shí)現(xiàn)我們就得使用幀布局來實(shí)現(xiàn)。第1章緒論圖3-4幀布局運(yùn)行界面第1章緒論現(xiàn)在開始項(xiàng)目制作。新建一個(gè)Android項(xiàng)目,命名為frameLayout,在項(xiàng)目的res文件夾下新建一個(gè)名為drawable的文件夾,將本案例中用到的圖片素材flower.png復(fù)制到該文件夾中。打開main.xml文件,切換到代碼模式界面下,將

LinearLayout標(biāo)簽改為FrameLayout,切換到main.xml文件的界面模式下,從palette容器中拖動(dòng)一個(gè)按鈕控件和一個(gè)圖片控件放到main.xml文件中,幀布局中添加的每一個(gè)控件都默認(rèn)放在布局的左上角位置,一個(gè)疊加一個(gè),而本例中我們需要將模擬的圖片和暫停按鈕放到界面的中心,因此我們?cè)趍ain.xml文件的代碼模式下添加控制屬性來控制圖片和按鈕的位置。第1章緒論第1章緒論3.2.4表格布局案例在Android的軟件開發(fā)中如果場(chǎng)景中要顯示n行n列的表格時(shí),多采用表格布局,我們先來看看表格布局案例運(yùn)行的結(jié)果圖,如圖3-5所示。第1章緒論圖3-5表格布局運(yùn)行界面第1章緒論現(xiàn)在開始項(xiàng)目制作。新建一個(gè)Android項(xiàng)目,命名為tableLayout,打開main.xml布局文件,切換到代碼模式界面下,將LinearLayout標(biāo)簽改為TableLayout,切換到main.xml文件的界面模式下,從palette容器中拖動(dòng)一個(gè)TableRow控件中放到布局文件中,拖動(dòng)四個(gè)TextView控件放到TableRow

控件中,回到布局文件的代碼模式界面中,修改屬性的值達(dá)到圖3-5所示效果,表格布局中TableRow控件顯示的是表格中的一行,因此,我們只需要設(shè)置好一行后,其他各行直接復(fù)制并修改值即可。第1章緒論本例中只有“android:stretchColumns=0,1,2,3”一個(gè)屬性的設(shè)置我們還不熟悉,該屬性設(shè)置的含義是指定表格布局中的每一行都由第“0、1、2、3”列占滿空白空間。第1章緒論3.2.5絕對(duì)布局案例因?yàn)锳ndroid手機(jī)的屏幕分辨率多種多樣,而絕對(duì)布局是采用界面上分辨率的具體值布局UI控件的,采用這種布局方式就需要考慮軟件對(duì)手機(jī)分辨率的適配問題,因此絕對(duì)布局在Android應(yīng)用軟件開發(fā)中使用的并不多,但因其布局的方便性,這種布局在Android的游戲開發(fā)中用的比較多,在此僅用一簡單案例說明絕對(duì)布局的布局方法。第1章緒論本例中只有android:layout_x和android:layout_y兩個(gè)屬性前面案例沒有見到,這兩個(gè)屬性值為具體數(shù)值,主要用來設(shè)置控件在界面中x,y坐標(biāo)的值。項(xiàng)目其他源代碼不做任何修改,部署運(yùn)行本項(xiàng)目即可看到圖3-6所示效果。第1章緒論圖3-6絕對(duì)布局運(yùn)行界面第1章緒論第4章Android中的UI控件UI控件概念介紹UI控件使用案例第1章緒論4.1

UI控件概念介紹Android應(yīng)用程序開發(fā)的過程,首先就是Android界面UI的設(shè)計(jì)與對(duì)界面UI控制的過程。在Android應(yīng)用程序中,所有UI元素稱為View,它們都繼承了android.view.View類。

View有眾多的子類,包括ViewGroup、基礎(chǔ)控件、高級(jí)控件和布局等。Android中控件類的擴(kuò)展結(jié)構(gòu)如圖4-1所示。第1章緒論圖4-1控件類擴(kuò)展結(jié)構(gòu)圖第1章緒論基礎(chǔ)控件文本控件TextViewTextView控件一般用來展示文本,繼承自android.view.View類,位于android.widget包中。其常用屬性如表4-1所示。第1章緒論第1章緒論2.編輯框控件EditTextEditText控件主要用于編輯框或輸入框,繼承自android.widget.TextView類,位于android.widget包中。其常用屬性如表4-2所示。第1章緒論第1章緒論3.按鈕控件ButtonButton控件是Android開發(fā)中最常用的按鈕控件,繼承自android.widget.TextView類,位于android.widget包中。它的常用子類有CheckBox、RadioButton、ToggleButton。其常用屬性如表4-3所示。第1章緒論4.圖片控件ImageViewImageView控件常用于顯示圖片,其圖片的來源可以是資源文件中圖片的id號(hào),也可以是Drawable對(duì)象或者位圖對(duì)象。其常用屬性如表4-4所示。第1章緒論5.單選按鈕控件RadioButtonRadioButton控件,繼承自android.widget.CompoundButton類,位于android.widget包中。單選按鈕通常不單獨(dú)使用,一般在RadioGroup中聲明,用于提供兩個(gè)或多個(gè)互斥選項(xiàng),即在一組單選按鈕中只能選擇一個(gè)。要監(jiān)聽單選按鈕狀態(tài)的更改,需給它所在的RadioGroup添加setOnCheckedChangeListener()監(jiān)聽器。其常用屬性如表4-5所示。第1章緒論第1章緒論復(fù)選按鈕控件CheckBoxCheckBox和Button一樣,也是一種常用的控件,它的優(yōu)點(diǎn)在于不需用戶去填寫具體的信息,只需輕輕點(diǎn)擊即可,缺點(diǎn)在于只有“是”和“否”兩種情況,但我們往往利用它的這個(gè)特性,來獲取用戶的一些信息。進(jìn)度條控件ProgressBar進(jìn)度條控件是一個(gè)很實(shí)用的組件,一般在應(yīng)用程序中用來顯示用戶某個(gè)耗時(shí)操作的進(jìn)度百分比。Android開發(fā)中的進(jìn)度條控件大致分為兩種,一種是圓形的進(jìn)度條,一種是條形的進(jìn)度條。進(jìn)度條控件常用屬性如表4-6所示。第1章緒論第1章緒論4.1.2高級(jí)控件Android中高級(jí)控件主要是指用作容器的幾個(gè)控件。常

用的幾個(gè)高級(jí)控件都直接或者間接地繼承了android.view.ViewGroup類。常用的高級(jí)控件主要包括ListView、GridView、Spinner、AutoCompleteTextView、ExpandableListView、Gallery等。這些控件之所以稱為高級(jí)控件,是因?yàn)樗鼈兊氖褂貌幌窕A(chǔ)控件拖曳到界面上就能使用,而是需要通過適配器將某些樣式的數(shù)據(jù)或控件添加到其上才能使用。高級(jí)控件的學(xué)習(xí)不僅要了解其特有的幾個(gè)屬性,更重要的是要掌握為它們?cè)O(shè)置數(shù)據(jù)的方法,因此我們主要以案例的方式來介紹高級(jí)控件的使用。第1章緒論4.2

UI控件使用案例基礎(chǔ)控件案例用戶注冊(cè)案例創(chuàng)建案例之前,我們先來看看本案例的運(yùn)行結(jié)果。本案例運(yùn)行后的效果如圖4-2所示。第1章緒論圖4-2用戶注冊(cè)項(xiàng)目運(yùn)行界面第1章緒論開始創(chuàng)建項(xiàng)目。新建一個(gè)Android項(xiàng)目,命名為baseUI,在項(xiàng)目的res文件夾下新建一個(gè)名為drawable的文件夾,將本案例中用到的兩張圖片素材復(fù)制到該文件夾中。圖片素材文件為bg.jpg、top.jpg。打開main.xml布局文件布局設(shè)置,整個(gè)界面采用垂直線性布局,界面背景設(shè)置為bg.jpg圖片,界面的上部放置一個(gè)圖片控件ImageView,數(shù)據(jù)源設(shè)置為top.jpg圖片;界面的中部放置六個(gè)橫向的線性布局,前三個(gè)橫向線性布局中各放置一個(gè)TextView控件和一個(gè)EditText控件,第四個(gè)橫向線性布局中放置一個(gè)TextView控件和一個(gè)RadioGroup控件,第五個(gè)橫向線性布局中放置一個(gè)TextView控件和三個(gè)CheckBox控件,第六個(gè)橫向線性布局中放置兩

個(gè)Button控件并設(shè)置該線性布局為水平居中對(duì)齊。第1章緒論部署運(yùn)行本案例,在模擬器的界面上輸入注冊(cè)信息,點(diǎn)擊注冊(cè)按鈕后,我們可以從LogCat中查看到界面上輸入的信息,如圖4-3所示。第1章緒論圖4-3

LogCat輸出情況第1章緒論2.下載文件模擬進(jìn)度案例本案例主要學(xué)習(xí)進(jìn)度條控件的使用方法,因此我們只是利用數(shù)值來模擬下載進(jìn)度的場(chǎng)景。案例運(yùn)行后的效果如圖4-4所示。第一個(gè)知識(shí)點(diǎn)是Android中線程的概念。當(dāng)我們部署運(yùn)行一個(gè)Android程序時(shí),一個(gè)被稱為“main”的線程就會(huì)被自動(dòng)創(chuàng)建。它被稱為主線程或者UI線程,主要負(fù)責(zé)處理應(yīng)用程序的UI事件,貫穿用戶和UI控件交互的整個(gè)過程。第1章緒論圖4-4模擬下載進(jìn)度界面第1章緒論我們做Android開發(fā)時(shí)要盡量避免讓主線程執(zhí)行耗時(shí)的操作,例如網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫查詢等操作,因?yàn)樵谥骶€程中執(zhí)行這些長時(shí)間的操作會(huì)阻塞主線程,從用戶的角度來看,好像該應(yīng)用程序出現(xiàn)了死機(jī)狀態(tài)。甚至更糟糕的是,如果UI程序被阻塞幾秒后,就會(huì)彈出程序無響應(yīng)(ANR:Application

Not

Responding)對(duì)話框,如圖4-5所示。第1章緒論圖4-5

ANR異常界面第1章緒論第二個(gè)知識(shí)點(diǎn)是Handle機(jī)制的概念。通過前面的學(xué)習(xí)我們知道,Android應(yīng)用程序運(yùn)行的線程稱為主線程或UI線程,這個(gè)線程中不能進(jìn)行耗時(shí)的操作,否則會(huì)出現(xiàn)ANR異常,耗時(shí)操作應(yīng)該放在子線程中執(zhí)行。往往會(huì)有這樣的場(chǎng)景,一個(gè)UI界面上有一個(gè)ListView控件,ListView控件上要顯示的數(shù)據(jù)需從網(wǎng)絡(luò)上獲得,那么我們就需要把從網(wǎng)絡(luò)上獲取數(shù)據(jù)的操作放在子線程中執(zhí)行,以免出現(xiàn)ANR異常。第1章緒論4.2.2高級(jí)控件案例在創(chuàng)建案例之前,先對(duì)這幾個(gè)控件和本案例中用到的一些Android知識(shí)做個(gè)簡單介紹。這幾個(gè)控件中,ListView控

件是以列表的形式顯示數(shù)據(jù)資源,Spinner是以下拉列表的

形式顯示數(shù)據(jù)資源,GridView是以網(wǎng)格的形式顯示數(shù)據(jù)資源,Gallery是以縮略圖的方式顯示圖片資源,前三個(gè)控件用得比較多,Gallery控件已經(jīng)被水平的ScrollView和ViewPicker取代,用得不是很多。每個(gè)控件都借助數(shù)據(jù)適配器Adapter對(duì)

象對(duì)顯示數(shù)據(jù)進(jìn)行加載,每個(gè)控件都能響應(yīng)用戶點(diǎn)擊的兩個(gè)事件,一是對(duì)控件中條目的單擊事件,另一個(gè)是對(duì)控件中條目的長按事件。第1章緒論兩個(gè)觸發(fā)事件都是通過給控件添加監(jiān)聽來實(shí)現(xiàn)的,具體實(shí)現(xiàn)如下:用戶單擊控件條目事件。為控件加載

setOnItemClickListener監(jiān)聽,重寫onItemClick()方法。用戶長按事件。為控件加載

setOnItemLongClickListener監(jiān)聽,重寫onItemLongClick()方法。第1章緒論要用好上述所說的高級(jí)控件,一定要理解“適配器”的概念,這兩個(gè)控件都是通過適配器將要顯示的數(shù)據(jù)映射到控件上的。適配器是一個(gè)連接數(shù)據(jù)和AdapterView的橋梁,ListView和GridView就是典型的AdapterView控件,后面還會(huì)學(xué)習(xí)其他的AdapterView,通過適配器能有效地實(shí)現(xiàn)數(shù)據(jù)與AdapterView的分離設(shè)置,使AdapterView與數(shù)據(jù)的綁定更加簡便,修改更加方便。Android中提供了很多的Adapter,表4-7列出了常用的幾個(gè)。第1章緒論第1章緒論1.ListView使用ArrayAdapter適配器分析一下使用的步驟。定義一個(gè)數(shù)組來存放ListView中item的內(nèi)容。通過實(shí)現(xiàn)ArrayAdapter的構(gòu)造函數(shù)來創(chuàng)建一個(gè)

ArrayAdapter的對(duì)象。通過ListView的setAdapter()方法綁定ArrayAdapter。第1章緒論2.ListView使用BaseAdapter適配器使用BaseAdapter必須寫一個(gè)類繼承它,同時(shí)

BaseAdapter是一個(gè)抽象類,繼承它必須實(shí)現(xiàn)它的方法。BaseAdapter的靈活性就在于它要重寫四個(gè)方法:getCount()、getItem(int

position)、getItemId(int

position)、getView()中最重要的為getView()方法。getView()方法返回每個(gè)條目項(xiàng)所顯示的View。第1章緒論第一個(gè)概念就是Activity的概念。Activity在Android中主要是來做應(yīng)用程序的界面,應(yīng)用程序有幾個(gè)界面,我們就

得定義幾個(gè)Activity,每一個(gè)Activity必須在AndroidManifest.xml文件中注冊(cè),同時(shí)Activity類還為我們準(zhǔn)備了啟動(dòng)另外一個(gè)Activity的方法startActivity(),傳入該方法的參數(shù)不同,則啟動(dòng)的Activity不同。第1章緒論第二個(gè)概念就是Intent的概念。Intent的中文意思是“意圖”,負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity/Service之間的交互。因此,startActivity()方法的參數(shù)就是intent。第1章緒論具體用法如下:Intent

intent=new

Intent(源界面名,目標(biāo)界面名);startActivity(intent);第1章緒論本項(xiàng)目有多個(gè)應(yīng)用程序界面,我們先來完成第一個(gè)界面。第一個(gè)界面是應(yīng)用程序的主界面,效果如圖4-6所示。該界

面由一個(gè)GridView控件構(gòu)成,在此界面上可以通過點(diǎn)擊GridView控件的每一個(gè)條目跳轉(zhuǎn)到另外一個(gè)界面。第1章緒論圖4-6

GridView界面第1章緒論開始創(chuàng)建項(xiàng)目。新建一個(gè)Android項(xiàng)目,命名為advance,在項(xiàng)目的res文件夾下新建一個(gè)名為drawable的文件夾,將本案例中用到的16張圖片素材復(fù)制到該文件夾中。圖片素材名稱為label01.png~label16.png。打開main.xml布局文件,向

main.xml文件中拖入一個(gè)GridView控件。設(shè)置其屬性如下:第1章緒論第1章緒論屬性設(shè)置說明:GridView控件以網(wǎng)格的形式顯示數(shù)據(jù)資源,因此必須指定一行顯示多少個(gè)網(wǎng)格,每個(gè)網(wǎng)格以怎樣的方式顯示。android:numColumns="4"用于設(shè)置GridView控件每行顯示四個(gè)網(wǎng)格,而每個(gè)網(wǎng)格中如何顯示必須再新建一個(gè)布局文件來說明。第1章緒論主要代碼解釋:View

view=View.inflate(MainActivity.this,R.layout.gv_item,null);方法的作用是將一個(gè)布局文件轉(zhuǎn)換為一個(gè)View對(duì)象,其中第一個(gè)參數(shù)是上下文,第二個(gè)參數(shù)是要轉(zhuǎn)換的布局文件,第三個(gè)參數(shù)是指定父窗體。public

void

onItemClick(AdapterView<?>parent,View

view,

int

position,long

id){}是GridView控件中每個(gè)條目被點(diǎn)擊后觸發(fā)的方法,其中第三個(gè)參數(shù)position是點(diǎn)擊條目的位置。第1章緒論部署運(yùn)行項(xiàng)目,點(diǎn)擊GridView的第一個(gè)條目,跳轉(zhuǎn)到ListView控件的顯示界面,如圖4-7所示。第1章緒論圖4-7

ListView顯示界面第1章緒論部署運(yùn)行項(xiàng)目,點(diǎn)擊GridView的第二個(gè)條目,跳轉(zhuǎn)到Spinner控件的顯示界面,如圖4-8所示。圖4-8

Spinner顯示界面第1章緒論部署運(yùn)行項(xiàng)目,點(diǎn)擊GridView的第三個(gè)條目,跳轉(zhuǎn)到AutoCompleteTextView控件的顯示界面,如圖4-9所示。圖4-9

AutoCompleteTextView顯示界面第1章緒論部署運(yùn)行項(xiàng)目,點(diǎn)擊GridView的第四個(gè)條目,跳轉(zhuǎn)到ExpandbleListView控件的顯示界面,如圖4-10所示。第1章緒論圖4-10

ExpandbleBistView顯示界面第1章緒論第5章Android中的交互與菜單Android中的Toast提示框Android的對(duì)話框Android事件處理Intent的進(jìn)階Android中的NotificationAndroid中的MenuAndroid中的多媒體播放第1章緒論5.1

Android中的Toast提示框Toast英文含義是“吐司”,是烤面包的意思。在

Android中,Toast是一種提示框,在需要時(shí)彈出來并持續(xù)顯示一段時(shí)間后慢慢消失。Toast提示框是一種不影響Activity運(yùn)行的信息簡單提示框。Toast提示框浮動(dòng)在應(yīng)用程序的界面之上,顯示信息給用戶,它不會(huì)獲得焦點(diǎn),不影響用戶的輸入等操作,主要用于一些簡單的信息提示或幫助。第1章緒論Toast是Android中最常用的控件之一,主要用來快速地為用戶顯示少量的提示信息。Toast也是一個(gè)容器,可以包含各種View,并承載著它們顯示。Toast提示框的使用場(chǎng)景:需要提示用戶,但又不需要用戶點(diǎn)擊“確定”或者“取消”按鈕。第1章緒論5.1.1

Toast提示框的創(chuàng)建只需要調(diào)用Toast類的靜態(tài)方法makeText即可創(chuàng)建默認(rèn)格式的Toast提示框。makeText()方法包含三個(gè)參數(shù),第一個(gè)參數(shù)指定上下文環(huán)境,一般使用getApplicationContext()方法獲取當(dāng)前程序的上下文,第二個(gè)參數(shù)是彈出的提示框中顯示

的提示文本,第三個(gè)參數(shù)是Toast提示框顯示的時(shí)間,0代表

短時(shí)間,1代表長時(shí)間。示例代碼:Toast.makeText(getApplicationContext(),"文本",0).show();第1章緒論5.1.2

Toast提示框的優(yōu)化調(diào)用makeText()靜態(tài)方法,只能創(chuàng)建默認(rèn)的Toast提示框,樣式不是很美觀,而且默認(rèn)的顯示位置在屏幕的下方。1.自定義Toast顯示的位置第1章緒論2.帶圖片的Toast第1章緒論3.自定義的Toast自定義Toast需要先創(chuàng)建一個(gè)xml布局文件,如圖5-1所示。圖5-1自定義Toast布局文件第1章緒論第1章緒論5.2

Android的對(duì)話框Toast提示框是不需要和用戶進(jìn)行交互的提示框,在做Android軟件開發(fā)的時(shí)候,我們經(jīng)常需要與用戶進(jìn)行交互的對(duì)話框,即對(duì)話框彈出后,用戶可以往對(duì)話框中輸入信息,并點(diǎn)擊其中的“確定”或“取消”按鈕,對(duì)話框據(jù)此轉(zhuǎn)入相應(yīng)的邏輯處理。第1章緒論Android

API支持下列類型的對(duì)話框?qū)ο?警告對(duì)話框AlertDialog:警告對(duì)話框可以創(chuàng)建大多數(shù)的交互界面,是最為常見的對(duì)話框類型。進(jìn)度對(duì)話框ProgressDialog:顯示一個(gè)進(jìn)度環(huán)或者一個(gè)進(jìn)度條。由于它是警告對(duì)話框AlertDialog的擴(kuò)展,所以它也支持按鈕。日期選擇對(duì)話框DatePickerDialog:讓用戶選擇日期。時(shí)間選擇對(duì)話框TimePickerDialog:讓用戶選擇時(shí)間。第1章緒論5.2.1常用的設(shè)置對(duì)話框方法使用AlertDialog.Builder創(chuàng)建對(duì)話框時(shí),需要先了解Buider類中設(shè)置對(duì)話框的一些方法。以下是設(shè)置對(duì)話框時(shí)常見的一些方法說明。第1章緒論第1章緒論5.2.2創(chuàng)建對(duì)話框的關(guān)鍵代碼1.警告對(duì)話框第1章緒論2.進(jìn)度對(duì)話框第1章緒論3.日期選擇對(duì)話框第1章緒論4.自定義對(duì)話框創(chuàng)建自定義對(duì)話框需要自定義的布局文件,如圖5-2所示。圖5-2自定義對(duì)話框布局文件第1章緒論5.3

Android事件處理Android中按鈕點(diǎn)擊事件處理的四種方法采用在Activity中創(chuàng)建一個(gè)內(nèi)部類定義點(diǎn)擊事件新建一個(gè)Android項(xiàng)目,在它的layout文件夾下的“activity_main.xml”中。第1章緒論新建了一個(gè)名叫“MyListener”的類,用它實(shí)現(xiàn)“OnClickListener”這個(gè)接口。實(shí)現(xiàn)一個(gè)接口,就必須實(shí)現(xiàn)這個(gè)接口里所有的非抽象類的方法,這個(gè)“onClick”方法就是點(diǎn)擊按鈕以后要執(zhí)行的方法。在模擬器上運(yùn)行程序,當(dāng)點(diǎn)擊這個(gè)按鈕的時(shí)候,會(huì)彈出一個(gè)文字提示,說明這次的點(diǎn)擊事件成功地執(zhí)行了。第1章緒論采用匿名內(nèi)部類定義點(diǎn)擊事件新建一個(gè)Android項(xiàng)目,“activity_main.xml”中的代碼和上一小節(jié)完全一樣,在它的MainActivity中鍵入代碼。Activity自己實(shí)現(xiàn)OnClickListener接口,實(shí)現(xiàn)onClick方法新建一個(gè)Android項(xiàng)目,“activity_main.xml”中的代碼和上一小節(jié)完全一樣,在它的MainActivity中鍵入代碼:第1章緒論4.在xml文件中創(chuàng)建Button

view時(shí),為它添加Onclick參數(shù)新建一個(gè)android項(xiàng)目,在“activity_main.xml”中鍵入代碼。第1章緒論5.3.2

Android中的鍵盤響應(yīng)事件Android中的鍵盤響應(yīng)事件最常見的例子就是我們?cè)谑褂靡豢钴浖臅r(shí)候,摁下手機(jī)上的返回鍵,使程序返回上一個(gè)Activity。這個(gè)過程實(shí)際上是觸發(fā)了onKeyDown方法,該

方法是接口KeyEvent.Callback中的抽象方法,所有的View全部實(shí)現(xiàn)了該接口并重寫了該方法,該方法用來捕捉手機(jī)鍵盤被按下的事件。第1章緒論參數(shù)keyCode是被按下的鍵值即鍵盤碼,手機(jī)鍵盤中每個(gè)按鈕都會(huì)有其單獨(dú)的鍵盤碼,在應(yīng)用程序都是通過鍵盤碼才知道用戶按下的是哪個(gè)鍵。參數(shù)event是按鍵事件的對(duì)象,其中包含了觸發(fā)事件的詳細(xì)信息,例如事件的狀態(tài)、事件的類型、事件發(fā)生的時(shí)間等。當(dāng)用戶按下按鍵時(shí),系統(tǒng)會(huì)自動(dòng)將事件封裝成KeyEvent對(duì)象供應(yīng)用程序使用。第1章緒論該方法的返回值為一個(gè)boolean類型的變量,當(dāng)返回true時(shí),表示已經(jīng)完整地處理了這個(gè)事件,并不希望其他的回調(diào)方法再次進(jìn)行處理;而當(dāng)返回false時(shí),表示并沒有完全處理完該事件,更希望其他回調(diào)方法繼續(xù)對(duì)其進(jìn)行處理,例如Activity中的回調(diào)方法。在模擬器上運(yùn)行程序,點(diǎn)擊手機(jī)上的返回鍵,這時(shí)候不是直接退出程序,而是彈出一個(gè)Dialog對(duì)話框來詢問用戶是否確認(rèn)退出。點(diǎn)擊確認(rèn),這時(shí)候才會(huì)退出程序。第1章緒論5.3.3

Android中的onTouchEvent事件onTouchEvent方法是當(dāng)觸摸手機(jī)屏幕時(shí)觸發(fā)的方法,重寫Activity的onTouchEvent方法后,當(dāng)屏幕有touch事件時(shí),此方法就會(huì)被調(diào)用,當(dāng)把手放到Activity上時(shí),onTouchEvent方法就會(huì)一遍一遍地被調(diào)用。下面我們通過一個(gè)小案例來學(xué)習(xí)onTouchEvent事件。在模擬器上運(yùn)行程序,鼠標(biāo)點(diǎn)擊界面,觀察LOG窗口

打印出來的日志,會(huì)發(fā)現(xiàn)打印出來的日志會(huì)隨著鼠標(biāo)動(dòng)作的變化而變化。第1章緒論5.4

Intent的進(jìn)階5.4.1什么是IntentIntent的中文意思是“意圖,意向”,在Android中提供了Intent機(jī)制來協(xié)助應(yīng)用程序之間進(jìn)行交互與通信,Intent主要用來說明應(yīng)用程序中一次操作的動(dòng)作及動(dòng)作涉及的數(shù)據(jù)和附加數(shù)據(jù),Android系統(tǒng)根據(jù)Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論