《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件_第1頁(yè)
《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件_第2頁(yè)
《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件_第3頁(yè)
《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件_第4頁(yè)
《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件_第5頁(yè)
已閱讀5頁(yè),還剩276頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)》全冊(cè)配套課件手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)Internet3/48課程介紹1、課程學(xué)習(xí)的目標(biāo)和意義2、課程學(xué)習(xí)方法3、參考資源云端數(shù)據(jù)和服務(wù)AndroidIOS兩種開(kāi)發(fā)架構(gòu)AndroidIOS系統(tǒng)架構(gòu)基于Java虛擬機(jī)基于UNIX系統(tǒng)安全性安全性略低安全、穩(wěn)定開(kāi)發(fā)語(yǔ)言JavaObjectiveC,Swift是否開(kāi)源開(kāi)源不開(kāi)源設(shè)備的種類(lèi)各類(lèi)手機(jī)和嵌入式設(shè)備iPhone/iPad等用戶(hù)人群大量用戶(hù)群體消費(fèi)能力較高用戶(hù)支撐企業(yè)GoogleApple應(yīng)用商店各類(lèi)安卓市場(chǎng)AppStore(08年上線)移動(dòng)終端時(shí)代的典型產(chǎn)品線IOS終端Android終端WeChat入口Web終端SwiftJavaHTML+Javascript遠(yuǎn)程數(shù)據(jù)和服務(wù):PHP、JavaEE、Python等數(shù)據(jù)存儲(chǔ):MySQL、Storage等合一的探索:TitaniumSDK發(fā)展:基于javascript的統(tǒng)一平臺(tái)8/48實(shí)踐目標(biāo):云服務(wù)支持的移動(dòng)應(yīng)用開(kāi)源的移動(dòng)app開(kāi)發(fā)彼此開(kāi)源、相互學(xué)習(xí)互助測(cè)試&迭代云端基礎(chǔ)數(shù)據(jù)服務(wù)將用戶(hù)數(shù)據(jù)的所有權(quán)歸還給用戶(hù)建立人人共享的開(kāi)源數(shù)據(jù)服務(wù)技術(shù)研究論文前端、服務(wù)器端均可在自己的項(xiàng)目中實(shí)現(xiàn)了,或是能夠?qū)崿F(xiàn)個(gè)人演示&講解9/48課程學(xué)習(xí)方法注重&研究交互設(shè)計(jì)面向用戶(hù)的敲門(mén)磚,仔細(xì)測(cè)試用戶(hù)體驗(yàn)整體性思維從數(shù)據(jù)表的設(shè)計(jì),到服務(wù)器端接口,到客戶(hù)端交互有計(jì)劃的實(shí)踐踏出第一步,你會(huì)發(fā)現(xiàn)驚喜互相開(kāi)源,互相分享技能,互相測(cè)試保持良好學(xué)習(xí)心態(tài)循序漸進(jìn),不放過(guò)細(xì)節(jié)為了實(shí)現(xiàn)內(nèi)心中一份愛(ài)的事業(yè)10/48參考資源網(wǎng)上獲取知識(shí)//////參考書(shū)籍《Android開(kāi)發(fā)藝術(shù)探索》《ModernPHP》《javascript高級(jí)程序設(shè)計(jì)》《JavaRESTfulWebService實(shí)戰(zhàn)》第一章Android基礎(chǔ)入門(mén)Android體系結(jié)構(gòu)Android開(kāi)發(fā)環(huán)境搭建開(kāi)發(fā)第一個(gè)Android程序?學(xué)習(xí)目標(biāo)通信技術(shù)Android體系結(jié)構(gòu)3重點(diǎn)了解掌握2Android程序結(jié)構(gòu)Android程序打包過(guò)程Android開(kāi)發(fā)環(huán)境搭建HelloWorld程序的編寫(xiě)1

目錄Android簡(jiǎn)介1.1?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)Android開(kāi)發(fā)環(huán)境搭建

1.2?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)開(kāi)發(fā)第一個(gè)Android程序1.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)本章小結(jié)1.4

知識(shí)架構(gòu)1.1Android簡(jiǎn)介返回目錄1.1.1通信技術(shù)1.1.3Android體系結(jié)構(gòu)1.1.2Android起源Dalvik虛擬機(jī)1.1.4

知識(shí)架構(gòu)1.2Android開(kāi)發(fā)環(huán)境搭建返回目錄1.2.1ADTBundle開(kāi)發(fā)工具集合1.2.3DDMS的使用1.2.2Android調(diào)試橋(ADB)

知識(shí)架構(gòu)1.3開(kāi)發(fā)第一個(gè)Android程序返回目錄1.3.1案例——HelloWorld程序1.3.3Android程序打包過(guò)程Android程序結(jié)構(gòu)1.3.21.1Android簡(jiǎn)介什么是Android?Android本意指“機(jī)器人”,Google公司將Android的標(biāo)識(shí)設(shè)計(jì)為一個(gè)綠色機(jī)器人,

表示Android系統(tǒng)符合環(huán)保概念,是一個(gè)輕薄短小,功能強(qiáng)大的移動(dòng)系統(tǒng),是第一個(gè)真正為手機(jī)打造的開(kāi)放性系統(tǒng)。1.1Android簡(jiǎn)介1.1Android簡(jiǎn)介1.1.1通信技術(shù)第一代通信技術(shù)(1G):是指最初的模擬、僅限語(yǔ)音的蜂窩電話標(biāo)準(zhǔn)。第二代通信技術(shù)(2G):是指第2代移動(dòng)通信技術(shù),代表為GSM,以數(shù)字語(yǔ)音傳輸技術(shù)為核心。第三代通信技術(shù)(3G):是指將無(wú)線通信與國(guó)際互聯(lián)網(wǎng)等多媒體通信結(jié)合的新一代移動(dòng)通信系統(tǒng)。第四代通信技術(shù)(4G):又稱(chēng)IMT-Advanced技術(shù),它包括了TD-LTE和FDD-LTE。1.1Android簡(jiǎn)介1.1.2Android起源Android一詞最早出現(xiàn)于法國(guó)作家利爾亞當(dāng)在1886年發(fā)表的科幻小說(shuō)《未來(lái)夏娃》中,將外表像人的機(jī)器起名為Android。Android操作系統(tǒng)最初是由安迪·羅賓(AndyRubin)開(kāi)發(fā)出的,2005年被Google收購(gòu),并于2007年11月5日正式向外界展示了這款系統(tǒng)。2008年9月發(fā)布Android第1個(gè)版本Android1.1。Android系統(tǒng)一經(jīng)推出,版本升級(jí)非???,幾乎每隔半年就有一個(gè)新的版本發(fā)布。從Android1.5版本開(kāi)始,Android用甜點(diǎn)作為系統(tǒng)版本的代號(hào)。2009年4月30日,Android1.5Cupcake(紙杯蛋糕)正式發(fā)布。2009年9月5日,Android1.6Donut(甜甜圈)版本發(fā)布。1.1Android簡(jiǎn)介1.1.2Android起源界面演進(jìn)1.1Android簡(jiǎn)介1.1.3Android體系結(jié)構(gòu)1.1Android簡(jiǎn)介1.1.4Dalvik虛擬機(jī)Dalvik是Google公司自己設(shè)計(jì)用于Android平臺(tái)的虛擬機(jī),它可以簡(jiǎn)單的完成進(jìn)程隔離和線程管理,并且可以提高內(nèi)存的使用效率?;诩軜?gòu)基于棧架構(gòu)基于寄存器架構(gòu)JVM(jdkjavac)文件格式.java.class.jar.java.class.dex.odexDalvikVM(sdkdex)1.2Android開(kāi)發(fā)環(huán)境搭建1.2.1ADTBundle開(kāi)發(fā)工具集合到“/sdk/index.html”網(wǎng)址,下載相應(yīng)的版本的ADTBundle。將ADTBundle解壓后,會(huì)看到eclipse目錄、sdk目錄和SDKManager.exe。1.2Android開(kāi)發(fā)環(huán)境搭建1.2.2Android調(diào)試橋(ADB)Android調(diào)試橋指的就是adb.exe工具(AndroidDebugBridge簡(jiǎn)稱(chēng)ADB),存在于SDK的platform-tools目錄中,允許開(kāi)發(fā)人員與模擬器或者連接的Android設(shè)備進(jìn)行通信。ADB常見(jiàn)命令adbstart-server:開(kāi)啟adb服務(wù)adbdevice:列出所有設(shè)備adblogcat:查看日志adbkill-server:關(guān)閉adb服務(wù)

adbshell:掛載到Linux的空間

1.2Android開(kāi)發(fā)環(huán)境搭建1.2.3

DDMS的使用DDMS全稱(chēng)DalvikDebugMonitorService,它是Android開(kāi)發(fā)環(huán)境中Dalvik虛擬機(jī)調(diào)試監(jiān)控服務(wù)。DDMS作為IDE、emultor、真機(jī)之間的橋梁,將捕捉到終端的ID通過(guò)ADB建立調(diào)試橋,從而實(shí)現(xiàn)發(fā)送指令到測(cè)試終端的目的。小計(jì)算如果VGA分辨率指的是640*480,那么,HVGA(H表示half)表示什么分辨率?320*240?320*480?QVGAQ代表quarter,即1/4240*320WVGA800*480SVGA,WSVGA800*600,1024*6001.3開(kāi)發(fā)第一個(gè)Android程序1.3.1案例——HelloWorld程序任何一門(mén)語(yǔ)言編寫(xiě)的第一個(gè)程序毫無(wú)疑問(wèn)的都是HelloWorld,當(dāng)然我們也不例外,本小節(jié)就教大家如何編寫(xiě)一個(gè)HelloWorld程序,以及了解Android項(xiàng)目的結(jié)構(gòu)。1.3開(kāi)發(fā)第一個(gè)Android程序1.3.2Android程序結(jié)構(gòu)Android程序創(chuàng)建時(shí),eclipse就為其構(gòu)建了基本結(jié)構(gòu),設(shè)計(jì)者可以在此結(jié)構(gòu)上開(kāi)發(fā)應(yīng)用程序,因此,掌握Android程序的結(jié)構(gòu)是很有必要的。1.3開(kāi)發(fā)第一個(gè)Android程序1.3.3Android程序打包過(guò)程Android程序開(kāi)發(fā)完成后,如果要發(fā)布到互聯(lián)網(wǎng)上供別人使用,就需要將自己的程序打包成正式的Android安裝包文件(AndroidPackage簡(jiǎn)稱(chēng)APK),其后綴名“.apk”。使用runas也能生成一個(gè)apk安裝包,但是使用runas生成的是測(cè)試的安裝包,只供開(kāi)發(fā)者自己測(cè)試使用。1.4本章小結(jié)本章主要講解了Android的基礎(chǔ)知識(shí),首先介紹了Android的起源以及體系結(jié)構(gòu),然后講解Android開(kāi)發(fā)環(huán)境的搭建,最后通過(guò)一個(gè)HelloWorld程序來(lái)講解如何開(kāi)發(fā)Android程序。本章的知識(shí)作為Android開(kāi)發(fā)者的入門(mén)知識(shí),要求初學(xué)者對(duì)Android開(kāi)發(fā)有個(gè)簡(jiǎn)單的了解,方便學(xué)習(xí)后面的知識(shí)。33/48再會(huì)!下一章:AndroidUI開(kāi)發(fā)新學(xué)期進(jìn)步!教師:金星辦公室:逸夫樓C326電話Q:65149264手機(jī)平臺(tái)應(yīng)用開(kāi)發(fā)?學(xué)習(xí)目標(biāo)3國(guó)際化重點(diǎn)了解掌握2樣式和主題布局的類(lèi)型程序調(diào)試1在Android應(yīng)用中,UI(UserInterface)界面是人與手機(jī)之間數(shù)據(jù)傳遞、交互信息的重要媒介和對(duì)話接口。Android程序開(kāi)發(fā)最重要的一個(gè)環(huán)節(jié)就是界面處理,界面的美觀度直接影響用戶(hù)的第一印象,因此,開(kāi)發(fā)一個(gè)整齊、美觀的界面是至關(guān)重要的。2.1UI概述2.1UI概述Android應(yīng)用的界面是由View和ViewGroup對(duì)象構(gòu)建而成的。View類(lèi)是Android系統(tǒng)平臺(tái)上用戶(hù)界面表示的基本單元,View的一些子類(lèi)被統(tǒng)稱(chēng)為Widgets(工具),它們提供了諸如文本輸入框和按鈕之類(lèi)的UI對(duì)象的完整實(shí)現(xiàn)。ViewGroup是View的一個(gè)擴(kuò)展,它可以容納多個(gè)View,通過(guò)ViewGroup類(lèi)可以創(chuàng)建有聯(lián)系的子View組成的復(fù)合控件。2.2布局文件的創(chuàng)建在Android應(yīng)用程序中,界面是通過(guò)布局文件設(shè)定的。布局文件采用XML格式,每個(gè)應(yīng)用程序默認(rèn)包含一個(gè)主界面布局文件,該文件位于項(xiàng)目的“res/layout”目錄中。

Android中有幾種布局?2.3布局的類(lèi)型Android中的布局如下:LinearLayoutRelativeLayoutTableLayoutGridLayoutFrameLayoutAbsoluteLayout2.3布局的類(lèi)型控件盒子模型一般控件屬性marginandroid:layout_marginTopandroid:layout_marginBottomandroid:layout_marginLeftandroid:layout_marginRight如果四面是相同的android:layout_marginpaddingandroid:paddingTopandroid:paddingBottomandroid:paddingLeftandroid:paddingRightandroid:background"#aa0000""@drawable/some"如果四面是相同的android:padding增強(qiáng)編程環(huán)境的自動(dòng)提示功能XML粘貼到里面:<=:.abcdefghijklmnopqrstuvwxyz(,Alt+/:自動(dòng)補(bǔ)全快捷鍵java粘貼到里面:.abcdefghijklmnopqrstuvwxyz(,Ctrl+1:快速修復(fù)Android有沒(méi)有Border?沒(méi)有提供。使用backgroundandroid:background只要是drawable均可drawable包括圖片和長(zhǎng)方形等矢量圖案。<shapexmlns:android="/apk/res/android"><strokeandroid:width="1dp"android:color="#f00"/></shape>單位px:1個(gè)像素,不建議使用這個(gè)單位PPI(DPI):Pixels(Dots)perinch,屏幕上每英寸有多少個(gè)像素。dp:Density-independentpixels,dp*ppi/160=pxsp:Scale-independentpixels,安卓的字體單位不同屏幕分辨率ldpi低分辨率120dpi1dp=0.75pxmdpi標(biāo)準(zhǔn)分辨率160dpi1dp=1pxhdpi高分辨率240dpi1dp=1.5pxxhdpi超高分辨率320dpi1dp=2px真實(shí)手機(jī)的DPI計(jì)算屏幕分辨率測(cè)試shapeImageView、ImageButton等控件android:src設(shè)置View的drawable(如圖片,也可以是顏色,但是需要指定View的大小)TextView等控件android:backgroundShape的子節(jié)點(diǎn)gradient--對(duì)應(yīng)顏色漸變。solid--填充。stroke--描邊。corners--圓角。padding--定義內(nèi)容離邊界的距離。圓角按鈕背景shape代碼節(jié)選<shapeandroid:shape="rectangle"><cornersandroid:topLeftRadius="5dp"android:bottomLeftRadius="5dp"android:topRightRadius="0.1dp"android:bottomRightRadius="0.1dp"/><strokeandroid:width="0.5dp"android:color="#0000ff"/><solidandroid:color="#00ffff"/></shape>其他控件屬性android:gravitytop,bottom,left,right,center,center_vertical,center_horizontalandroid:ignoreGravityandroid:layout_gravity區(qū)別前兩者是對(duì)內(nèi)容的限定后者是相對(duì)父元素限定android:scaleType設(shè)置圖片適配控件尺寸的不同方式。2.3.1相對(duì)布局(RelativeLayout)。在Eclipse中開(kāi)發(fā)Android程序時(shí),默認(rèn)采用的就是相對(duì)布局。相對(duì)布局通常有兩種形式,一種是相對(duì)于容器而言的,一種是相對(duì)于控件而言的。2.3布局的類(lèi)型第一類(lèi):屬性值為true或falseandroid:layout_centerHorizontal水平居中android:layout_centerVertical垂直居中android:layout_centerInparent相對(duì)于父元素完全居中android:layout_alignWithParentIfMissing如果對(duì)應(yīng)的兄弟元素找不到的話就以父元素做參照物android:layout_alignParentBottom貼緊父元素的下邊緣android:layout_alignParentLeft貼緊父元素的左邊緣android:layout_alignParentRight貼緊父元素的右邊緣android:layout_alignParentTop貼緊父元素的上邊緣第二類(lèi):屬性值必須為id的引用名“@id/id-name”android:layout_below在某元素的下方android:layout_above在某元素的上方android:layout_toLeftOf在某元素的左邊android:layout_toRightOf在某元素的右邊android:layout_alignTop本元素的上邊緣和某元素的的上邊緣對(duì)齊android:layout_alignLeft本元素的左邊緣和某元素的的左邊緣對(duì)齊android:layout_alignBottom本元素的下邊緣和某元素的的下邊緣對(duì)齊android:layout_alignRight本元素的右邊緣和某元素的的右邊緣對(duì)齊2.3布局的類(lèi)型2.3.2線性布局(LinearLayout)線性布局是Android中較為常用的布局方式,它使用<LinearLayout>標(biāo)簽表示。線性布局有兩種方式指定控件位置,一種是水平方向,一種是豎直方向。

屬性android:orientation布局的方向layout_weight相對(duì)大小取值:一個(gè)非負(fù)整數(shù)值線性布局會(huì)根據(jù)該控件layout_weight值與其所處布局中所有控件layout_weight值之和的比值為該控件分配占用的區(qū)域。注意:如果layout_weight指為0,控件會(huì)按原大小顯示,不會(huì)被拉伸。2.3布局的類(lèi)型2.3.3表格布局(TableLayout)表格布局就是讓控件以表格的形式來(lái)排列組件的,只要將組件或信息放在單元格中,控件就可以整齊的排列。

在TableLayout中,行數(shù)由TableRow對(duì)象控制的,即布局中有多少TableRow對(duì)象,就有多少行。2.3布局的類(lèi)型

2.3.4網(wǎng)格布局(GridLayout)網(wǎng)格布局是Android4.0新增的布局,它實(shí)現(xiàn)了控件的交錯(cuò)顯示,能夠避免因布局嵌套對(duì)設(shè)備性能的影響,更利于自由布局的開(kāi)發(fā)。網(wǎng)格布局用一組無(wú)限細(xì)的直線將繪圖區(qū)域分成行、列和單元,并指定控件的顯示區(qū)域和控件在該區(qū)域的顯示方式。2.3布局的類(lèi)型

腳下留心:由于GridLayout是Android4.0之后有的新功能,如果要在項(xiàng)目中使用這種布局,需要把SDK的最低版本指定為Android4.0(API14)以上。AndroidManifest.xml中,配置SDK兼容的最低版本和最高版本示例代碼如下:

<uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="17"/>2.3布局的類(lèi)型

2.3.5幀布局(FrameLayout)幀布局為每個(gè)加入其中的控件創(chuàng)建一個(gè)空白區(qū)域(稱(chēng)為一幀,每個(gè)控件占據(jù)一幀)。采用幀布局設(shè)計(jì)界面時(shí),只能在屏幕左上角顯示一個(gè)控件,如果添加多個(gè)控件,這些控件會(huì)按照順序在屏幕的左上角重疊顯示,且會(huì)透明顯示之前控件的文本。

2.3布局的類(lèi)型

2.3.6絕對(duì)布局AbsoluteLayout絕對(duì)布局需要通過(guò)指定x、y坐標(biāo)來(lái)控制每一個(gè)控件的位置,放入該布局的組件需要通過(guò)android:layout_x和android:layout_y兩個(gè)屬性指定其準(zhǔn)確的坐標(biāo)值,并顯示在屏幕上。2.3布局的類(lèi)型

2.3.6絕對(duì)布局(AbsoluteLayout)絕對(duì)布局多用于游戲開(kāi)發(fā)中,由于多分辨率兼容麻煩,絕對(duì)布局在Android1.5后被Google棄用,因此應(yīng)用開(kāi)發(fā)一般情況下不推薦使用絕對(duì)布局。2.3布局的類(lèi)型

2.3.7案例——用戶(hù)注冊(cè)接下來(lái)通過(guò)一個(gè)用戶(hù)注冊(cè)的案例演示相對(duì)布局和線性布局的使用。2.4樣式和主題2.4.1樣式和主題的使用Android系統(tǒng)中,包含了很多定義好的樣式和主題,這些樣式和主題用于定義布局顯示在界面上的風(fēng)格。下圖就是一幅設(shè)置了窗口化主題的應(yīng)用。2.4樣式和主題2.4.2案例——自定義樣式和主題盡管Android系統(tǒng)提供了很多樣式和主題,但有時(shí)這些效果并不能滿(mǎn)足實(shí)際需求,此時(shí)還可以自定義樣式或者主題。自定義樣式和主題的步驟如下:

1)在res/values目錄創(chuàng)建樣式文件style.xml,添加<resources>根節(jié)點(diǎn)。

2)在<resources>節(jié)點(diǎn)中添加一個(gè)<style>節(jié)點(diǎn),并在該節(jié)點(diǎn)中為樣式或

主題定義一個(gè)名稱(chēng)。3)在<style>節(jié)點(diǎn)中聲明一個(gè)或多個(gè)<item>,每個(gè)<item>節(jié)點(diǎn)需要定義一

個(gè)屬性名,并在元素內(nèi)部設(shè)置這個(gè)屬性的值。2.4樣式和主題2.4.2案例——自定義樣式和主題接下來(lái)通過(guò)一個(gè)具體的案例來(lái)演示如何自定義樣式和主題。2.5國(guó)際化2.5國(guó)際化國(guó)際化是指軟件開(kāi)發(fā)時(shí),應(yīng)該具備支持多種語(yǔ)言和地區(qū)的功能,為不同國(guó)家和地區(qū)的用戶(hù),提供符合來(lái)訪者閱讀習(xí)慣的頁(yè)面或數(shù)據(jù)。由于國(guó)際化Internationalization這個(gè)單詞的首字母“I”和尾字母“N”之間有18個(gè)字符,因此國(guó)際化被簡(jiǎn)稱(chēng)為I18N。為了提供不同語(yǔ)言版本,開(kāi)發(fā)者只需要在res目錄下新建對(duì)應(yīng)的values文件夾。2.5國(guó)際化2.5國(guó)際化接下來(lái)通過(guò)一個(gè)案例I18N來(lái)展示圖片、文字的國(guó)際化。I18N實(shí)現(xiàn)了在系統(tǒng)設(shè)置頁(yè)面切換不同國(guó)家語(yǔ)言,在程序界面展示不同國(guó)家的國(guó)花以及文字。2.6程序調(diào)試2.6.1Junit單元測(cè)試JUnit是一個(gè)測(cè)試框架,它是Android

SDK1.5加入的自動(dòng)化測(cè)試功能。在完成某個(gè)功能后對(duì)該功能進(jìn)行單獨(dú)測(cè)試,而不需要把程序安裝到手機(jī)或模擬器中進(jìn)行測(cè)試,這樣會(huì)大大提高程序開(kāi)發(fā)的準(zhǔn)確性。JUnit單元測(cè)試既可以嵌入到項(xiàng)目中,也可以作為一個(gè)單獨(dú)的項(xiàng)目,針對(duì)某個(gè)項(xiàng)目進(jìn)行測(cè)試。具體步驟如下:1)配置JUnit環(huán)境2)創(chuàng)建測(cè)試類(lèi)3)運(yùn)行測(cè)試 2.6程序調(diào)試2.6.2LogCat使用LogCat用于輸出Android程序中的日志信息。它支持五種輸出方式,級(jí)別由低到高分別是:Verbose(V):

顯示全部信息,黑色Debug(D):

顯示調(diào)試信息,藍(lán)色I(xiàn)nfo(I):

顯示一般信息,綠色Warming(W):顯示警告信息,橙色Error(E):

顯示錯(cuò)誤信息,紅色2.6程序調(diào)試2.6.2LogCat使用由于LogCat中輸出的信息多而繁雜,找到所需要的Log信息會(huì)比較困難,因此可以使用過(guò)濾器,過(guò)濾掉不需要的信息,點(diǎn)擊加號(hào),彈出LogCat信息過(guò)濾框。2.6程序調(diào)試2.6.3Toast的使用Toast會(huì)顯示一個(gè)小消息告訴用戶(hù)一些必要信息,該消息在短時(shí)間內(nèi)自動(dòng)消失,不會(huì)干擾用戶(hù)操作。Toast組件有兩個(gè)方法makeText()和show(),其中makeText()方法用于設(shè)置需要顯示的字符串,show()方法顯示消息框。Toasttoast=Toast.makeText(Context,Text,Time);toast.show();簡(jiǎn)寫(xiě)形式如下:Toast.makeText(context,"這是彈出消息!",0).show();2.6程序調(diào)試2.6.3Toast的使用接下來(lái)在程序中創(chuàng)建一個(gè)Toast顯示“這是彈出消息!”,示例代碼如下:

Toast.makeText(MainActivity.this,"這是彈出消息!",Toast.LENGTH_SHORT).show();2.7本章小結(jié)本章主要講解了Android中的布局、樣式和主題、國(guó)際化、程序調(diào)試等知識(shí)。本章所講解的內(nèi)容在實(shí)際開(kāi)發(fā)中非常重要,基本上每個(gè)Android程序都會(huì)使用到這些內(nèi)容,因此要求初學(xué)者必須熟練掌握,為后面的學(xué)習(xí)做好鋪墊75/48再會(huì)!下一章:Activity循序漸進(jìn)!第三章ActivityActivity生命周期Activity的啟動(dòng)模式顯式意圖和隱式意圖Activity中的數(shù)據(jù)傳遞?學(xué)習(xí)目標(biāo)3Activity簡(jiǎn)介重點(diǎn)了解掌握2Android中的任務(wù)棧Activity的四種啟動(dòng)模式Activity的生命周期Activity中的數(shù)據(jù)傳遞顯式意圖和隱式意圖1

目錄Activity入門(mén)3.1?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)Activity的啟動(dòng)模式

3.2?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)在Activity中使用Intent3.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)Activity中的數(shù)據(jù)傳遞3.4?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)本章小節(jié)3.5

知識(shí)架構(gòu)3.1Activity入門(mén)返回目錄3.1.1Activity簡(jiǎn)介3.1.3Activity的生命周期Activity的創(chuàng)建3.1.2案例——Activity的存活3.1.4

知識(shí)架構(gòu)3.2Activity的啟動(dòng)模式返回目錄3.2.1Android下的任務(wù)棧3.2.2Activity的四種啟動(dòng)模式

知識(shí)架構(gòu)3.3在Activity中使用Intent返回目錄3.3.1Intent介紹3.3.3案例——打開(kāi)系統(tǒng)照相機(jī)3.3.2顯式意圖和隱式意圖

知識(shí)架構(gòu)3.4Activity中的數(shù)據(jù)傳遞返回目錄3.4.1數(shù)據(jù)傳遞方式3.4.3回傳數(shù)據(jù)3.4.2案例——用戶(hù)注冊(cè)案例——裝備選擇3.4.43.1

Activity入門(mén)什么是Activity?3.1.1Activity簡(jiǎn)介

3.1

Activity入門(mén)3.1.1Activity簡(jiǎn)介

Activity是Android應(yīng)用程序的四大組件之一,它負(fù)責(zé)管理Android應(yīng)用程序的用戶(hù)界面。一個(gè)應(yīng)用程序一般會(huì)包含若干個(gè)Activity,每一個(gè)Activity組件負(fù)責(zé)一個(gè)用戶(hù)界面的展現(xiàn)。Activity展示界面Activity展示界面3.1

Activity入門(mén)3.1.1Activity簡(jiǎn)介Activity是通過(guò)調(diào)用setContentView()方法來(lái)顯示指定組件的。該方法既可以接收View對(duì)象為參數(shù),也可以接收布局文件對(duì)應(yīng)的資源id為參數(shù)。Activity就像一個(gè)界面管理員,用戶(hù)在界面上的操作是通過(guò)Activity來(lái)管理的,下面列舉幾個(gè)Activity的常用事件。onKeyDown(intkeyCode,KeyEventevent):對(duì)應(yīng)按鍵按下事件onKeyUp(intkeyCode,KeyEventevent):對(duì)應(yīng)按鍵松開(kāi)事件onTouchEvent(MotionEventevent):對(duì)應(yīng)點(diǎn)擊屏幕事件3.1

Activity入門(mén)3.1.2Activity的創(chuàng)建在Android應(yīng)用中,可以創(chuàng)建一個(gè)或多個(gè)Activity,創(chuàng)建步驟如下所示:1)定義一個(gè)類(lèi)繼承自android.app.Activity或者其子類(lèi);2)在res/layout目錄中創(chuàng)建一個(gè)xml文件,用于創(chuàng)建Activity的布局;3)在AndroidManifest.xml文件中注冊(cè)Activity;4)重寫(xiě)Activity的onCreate()方法,并在該方法中使用setContentView()

加載指定的布局文件;3.1

Activity入門(mén)3.1.3Activity的生命周期生命周期就是一個(gè)對(duì)象從創(chuàng)建到銷(xiāo)毀的過(guò)程,每一個(gè)對(duì)象都有自己的生命周期。同樣,Activity也具有相應(yīng)的生命周期,Activity的生命周期中分為三種狀態(tài)。運(yùn)行狀態(tài):當(dāng)Activity在屏幕的最前端時(shí),它是可見(jiàn)的、有焦點(diǎn)的。暫停狀態(tài):Activity對(duì)用戶(hù)來(lái)說(shuō)仍然是可見(jiàn)的,但它不再擁有焦點(diǎn)。停止?fàn)顟B(tài):當(dāng)Activity完全不可見(jiàn)時(shí),它就處于停止?fàn)顟B(tài),但仍然保留著當(dāng)前狀態(tài)和成員信息。然而這些對(duì)用戶(hù)來(lái)說(shuō)都是不可見(jiàn)的。Activity從一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時(shí)會(huì)觸發(fā)一些事件,執(zhí)行一些回調(diào)方法來(lái)通知狀態(tài)的變化,下面通過(guò)圖例來(lái)展示。3.1

Activity入門(mén)3.1.3Activity的生命周期創(chuàng)建時(shí)執(zhí)行可見(jiàn)時(shí)執(zhí)行回到前臺(tái),再次可見(jiàn)時(shí)執(zhí)行獲取焦點(diǎn)時(shí)執(zhí)行失去焦點(diǎn)時(shí)執(zhí)行用戶(hù)不可見(jiàn),進(jìn)入后臺(tái)時(shí)執(zhí)行銷(xiāo)毀時(shí)執(zhí)行3.1

Activity入門(mén)3.1.4案例——Activity的存活為了讓初學(xué)者掌握Activity的生命周期,接下來(lái)通過(guò)Activity存活的案例來(lái)演示兩個(gè)Activity跳轉(zhuǎn)時(shí),生命周期方法變化的過(guò)程。3.1

Activity入門(mén)

腳下留心:橫豎屏切換時(shí)的生命周期當(dāng)手機(jī)橫豎屏切換時(shí),Activity會(huì)銷(xiāo)毀重建(模擬器中橫豎屏切換可以使用ctrl+F11)。如果不希望在橫豎屏切換時(shí)Activity被銷(xiāo)毀重建,可以在AndroidManifest.xml文件中設(shè)置Activity的android:configChanges的屬性,具體代碼如下所示:android:configChanges="orientation|keyboardHidden|screenSize“如果希望某一個(gè)界面一直處于豎屏或者橫屏狀態(tài),可以在清單文件中通過(guò)設(shè)置Activity的屬性來(lái)完成,具體代碼如下所示:豎屏:android:screenOrientation="portrait"橫屏:android:screenOrientation="landscape"參考資料:/article/31833.htm3.1

Activity入門(mén)

多學(xué)一招:設(shè)置View的點(diǎn)擊事件監(jiān)聽(tīng)Android程序中,設(shè)置View的點(diǎn)擊事件監(jiān)聽(tīng)共有四種,分別是:1)在布局文件中為控件設(shè)置onClick屬性指定點(diǎn)擊方法;2)創(chuàng)建一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)OnClickListener接口并重寫(xiě)onClick()方法,

之后需要為控件設(shè)置setOnClickListener(Listenerlistener);3)主類(lèi)中實(shí)現(xiàn)OnclickListener接口,然后重寫(xiě)onClick()方法;4)創(chuàng)建匿名內(nèi)部類(lèi),即在為控件設(shè)置監(jiān)聽(tīng)時(shí)直接創(chuàng)建一個(gè)OnClickListener實(shí)例,不為該實(shí)例指定名稱(chēng)。3.2

Activity的啟動(dòng)模式3.2.1Android下的任務(wù)棧Android系統(tǒng)中的任務(wù)棧,類(lèi)似于一個(gè)容器,用于管理所有的Activity實(shí)例。在存放Activity時(shí),滿(mǎn)足“先進(jìn)后出(First-In/Last-Out)”的原則。從圖可以看出,先加入任務(wù)棧中的Activity會(huì)處于容器下面,后加入的處于容器上面,而從任務(wù)棧中取出Activity是從最頂端先取出,最后取出的是最底端的Activity。3.2

Activity的啟動(dòng)模式3.2.2Activity的四種啟動(dòng)模式Activity的啟動(dòng)模式有四種,分別是standard、singleTop、singleTask和singleInstance。在AndroidManifest.xml中,可以通過(guò)<activity>標(biāo)簽的android:launchMode屬性設(shè)置啟動(dòng)模式。3.2

Activity的啟動(dòng)模式3.2.2

Activity的四種啟動(dòng)模式standard標(biāo)準(zhǔn)模式standard是Activity默認(rèn)的啟動(dòng)模式,在不指定Activity啟動(dòng)模式的情況下,所有Activity使用的都是standard模式。在standard模式下,每當(dāng)啟動(dòng)一個(gè)新的Activity,它就會(huì)進(jìn)入任務(wù)棧,并處于棧頂?shù)奈恢?,?duì)于使用standard模式的Activity,每次啟動(dòng)都會(huì)創(chuàng)建一個(gè)新的實(shí)例。3.2

Activity的啟動(dòng)模式3.2.2

Activity的四種啟動(dòng)模式singleTop模式singleTop啟動(dòng)模式與standard類(lèi)似,不同的是,當(dāng)啟動(dòng)的Activity已經(jīng)位于棧頂時(shí),則直接使用它,不再創(chuàng)建新的實(shí)例。3.2

Activity的啟動(dòng)模式3.2.2

Activity的四種啟動(dòng)模式singleTask模式當(dāng)Activity的啟動(dòng)模式為singleTask時(shí),每次啟動(dòng)該Activity時(shí),系統(tǒng)首先會(huì)檢查棧中是否存在該Activity的實(shí)例,如果發(fā)現(xiàn)已經(jīng)存在則直接使用該實(shí)例,并將當(dāng)前Activity之上的所有Activity出棧,如果沒(méi)有發(fā)現(xiàn)則創(chuàng)建一個(gè)新的實(shí)例。3.2

Activity的啟動(dòng)模式3.2.2

Activity的四種啟動(dòng)模式singleInstance模式singleInstance模式加載Activity時(shí),只會(huì)創(chuàng)建一個(gè)Activity實(shí)例,并且會(huì)使用一個(gè)全新的任務(wù)棧來(lái)裝載該Activity實(shí)例。/kf/201311/254450.html/kf/201503/380172.html3.3在Activity中使用Intent3.3.1Intent介紹Intent中文翻譯為“意圖”,它是Android程序中各個(gè)組件進(jìn)行交互的一種重要方式,它不僅可以指定當(dāng)前組件要執(zhí)行的動(dòng)作,還可以在不同組件之間進(jìn)行數(shù)據(jù)傳遞。Intent一般用于啟動(dòng)Activity、啟動(dòng)服務(wù)、發(fā)送廣播等,承擔(dān)了Android應(yīng)用程序三大核心組件相互間的通信功能。Intent啟動(dòng)Activity的方法有:startActivity(Intentintent)

startActivityForResult(Intentintent,intcode)

3.3在Activity中使用Intent3.3.2顯式意圖和隱式意圖顯式意圖即在通過(guò)Intent啟動(dòng)Activity時(shí),需明確指定激活組件的名稱(chēng)。如果需要在本應(yīng)用中啟動(dòng)其他的Activity時(shí),可以使用顯式意圖來(lái)啟動(dòng)Activity。Intentintent=newIntent(this,Activity02.class);startActivity(intent);顯式意圖還可以根據(jù)目標(biāo)組件的包名、全路徑名來(lái)指定開(kāi)啟組intent.setClassName("cn.itcast.xxx","cn.itcast.xxx.xxxx");startActivity(intent);3.3在Activity中使用Intent3.3.2顯式意圖和隱式意圖隱式意圖沒(méi)有明確指定組件名的Intent稱(chēng)為隱式意圖。系統(tǒng)會(huì)根據(jù)隱式意圖中設(shè)置的動(dòng)作(action)、類(lèi)別(category)、數(shù)據(jù)(Uri和數(shù)據(jù)類(lèi)型)找到最合適的組件。

<activityandroid:name="ent.Activity02"><intent-filter><actionandroid:name="cn.itscast.xxx"/><categoryandroid:name="ent.category.DEFAULT"/></intent-filter></activity><action>標(biāo)簽指明了當(dāng)前Activity可以響應(yīng)的動(dòng)作為"cn.itscast.xxx",而<category>標(biāo)簽則包含了一些類(lèi)別信息,只有當(dāng)<action>和<category>中的內(nèi)容同時(shí)匹配時(shí),Activity才會(huì)被開(kāi)啟。3.3在Activity中使用Intent3.3.2顯式意圖和隱式意圖隱式意圖使用隱式意圖開(kāi)啟Activity的示例代碼如下所示:Intentintent=newIntent();//設(shè)置動(dòng)作和清單文件一樣intent.setAction("cn.itscast.xxx");startActivity(intent);

3.3在Activity中使用Intent3.3.3案例——打開(kāi)系統(tǒng)照相機(jī)在實(shí)際開(kāi)發(fā)中,避免不了要調(diào)用其他應(yīng)用程序的組件。例如,在開(kāi)發(fā)新浪微博時(shí),需要啟動(dòng)系統(tǒng)的相機(jī)功能。接下來(lái)通過(guò)打開(kāi)系統(tǒng)照相機(jī)的案例向大家演示如何使用隱式意圖。3.4

Activity中的數(shù)據(jù)傳遞3.4.1數(shù)據(jù)傳遞方式Intent不僅可以用來(lái)開(kāi)啟Activity,也可以在Activity之間傳遞數(shù)據(jù)。在數(shù)據(jù)傳遞時(shí),可以使用putExtra()方法將數(shù)據(jù)存儲(chǔ)在Intent中。

Stringdata="HelloActivity02"Intentintent=newIntent(this,Activity02.class);intent.putExtra("extra_data",data);startActivity(intent);將數(shù)據(jù)從Activity02中取出Intentintent=getIntent();Stringdata==intent.getStringExtra("extra_data");3.4

Activity中的數(shù)據(jù)傳遞3.4.1數(shù)據(jù)傳遞方式putExtra()不僅可以傳遞基本類(lèi)型數(shù)據(jù),還可以傳遞Bundle對(duì)象。Bundlebundle=newBundle();bundle.putString("name","Linda");Intentintent=newIntent(this,Activity02.class);intent.putExtra(bundle);startActivity(intent);將數(shù)據(jù)從Activity02中取出

Intentintent=getIntent();Bundlebundle=intent.getExtras();StringstuName=bundle.getString("name");3.4

Activity中的數(shù)據(jù)傳遞3.4.2案例——用戶(hù)注冊(cè)為了讓初學(xué)者更好的掌握Activity中的數(shù)據(jù)傳遞,接下來(lái)通過(guò)用戶(hù)注冊(cè)的案例來(lái)演示Activity中的數(shù)據(jù)傳遞。3.4

Activity中的數(shù)據(jù)傳遞3.4.3回傳數(shù)據(jù)在使用新浪微博APP時(shí),能發(fā)現(xiàn)在微博發(fā)布頁(yè)面進(jìn)入圖庫(kù)選擇圖片后,會(huì)回到微博發(fā)布頁(yè)面并帶回了圖片選擇頁(yè)面的圖片信息。這個(gè)功能的實(shí)現(xiàn)利用了Activity回傳數(shù)據(jù)。Andorid提供了一個(gè)startActivityForResult()方法,來(lái)實(shí)現(xiàn)回傳數(shù)據(jù)。startActivityForResult()方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)是Intent,第二個(gè)參數(shù)用于判斷數(shù)據(jù)的來(lái)源。3.4

Activity中的數(shù)據(jù)傳遞3.4.4案例——裝備選擇接下來(lái)通過(guò)案例裝備選擇來(lái)演示Activity回傳數(shù)據(jù)。本案例實(shí)現(xiàn)了購(gòu)買(mǎi)裝備增加生命值的功能。3.5本章小結(jié)本章主要講解了Activity的相關(guān)知識(shí),包括Activity入門(mén)、Activity啟動(dòng)模式、Intent使用以及Activity中的數(shù)據(jù)傳遞,并在講解各個(gè)知識(shí)點(diǎn)時(shí)都編寫(xiě)了實(shí)用的案例用來(lái)鞏固知識(shí)點(diǎn)。由于凡是有界面的Android程序都會(huì)使用到Activity,因此,要求初學(xué)者必須熟練掌握該組件的使用。第四章數(shù)據(jù)存儲(chǔ)

文件存儲(chǔ)XML序列化和解析SharedPreferences?學(xué)習(xí)目標(biāo)重點(diǎn)了解掌握文件存儲(chǔ)SharedPreferences13數(shù)據(jù)存儲(chǔ)的方式2XML序列化和解析

目錄數(shù)據(jù)存儲(chǔ)方式4.1文件存儲(chǔ)

4.2XML序列化和解析4.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)SharedPreferences4.4?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)本章小結(jié)4.5?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)

知識(shí)架構(gòu)4.2文件存儲(chǔ)

返回目錄4.2.1文件存儲(chǔ)簡(jiǎn)介4.2.2案例——存儲(chǔ)用戶(hù)信息

知識(shí)架構(gòu)4.3XML序列化和解析返回目錄4.3.1XML序列化XML解析4.3.3案例——天氣預(yù)報(bào)4.3.44.3.2案例——XML序列化

知識(shí)架構(gòu)4.4SharedPreferences返回目錄4.4.1SharedPreferences的使用4.4.2案例——QQ登錄Android中有幾種數(shù)據(jù)存儲(chǔ)方式?4.1數(shù)據(jù)存儲(chǔ)方式Android中的數(shù)據(jù)存儲(chǔ)方式有五種,分別是文件存儲(chǔ)、SharedPreferences、SQLite數(shù)據(jù)庫(kù)、ContentProvider以及網(wǎng)絡(luò)存儲(chǔ)。4.2.1文件存儲(chǔ)簡(jiǎn)介數(shù)據(jù)存儲(chǔ)文件存儲(chǔ)Sharedpreferences網(wǎng)絡(luò)存儲(chǔ)ContentProviderSQLite數(shù)據(jù)庫(kù)4.1數(shù)據(jù)存儲(chǔ)方式4.2文件存儲(chǔ)4.2.1文件存儲(chǔ)簡(jiǎn)介。文件存儲(chǔ)是Android中最基本的一種數(shù)據(jù)存儲(chǔ)方式,它與Java中的文件存儲(chǔ)類(lèi)似,都是通過(guò)I/O流的形式把數(shù)據(jù)原封不動(dòng)的存儲(chǔ)到文檔中。Android中的文件存儲(chǔ)分為內(nèi)部存儲(chǔ)和外部存儲(chǔ)。內(nèi)部存儲(chǔ)指將應(yīng)用程序中的數(shù)據(jù)以文件方式存儲(chǔ)到設(shè)備的內(nèi)部存儲(chǔ)空間中(位于data/data/<packagename>/files/目錄)外部存儲(chǔ)指將文件存儲(chǔ)到一些外部設(shè)備上(通常位于mnt/sdcard目錄下,不同廠商生產(chǎn)的手機(jī)路徑可能不同),屬于永久性的存儲(chǔ)方式。

4.2文件存儲(chǔ)4.2.2案例——存儲(chǔ)用戶(hù)信息為了讓初學(xué)者更好地掌握文件存儲(chǔ)數(shù)據(jù)的方式,接下來(lái)通過(guò)一個(gè)存儲(chǔ)用戶(hù)信息的案例來(lái)學(xué)習(xí)。

4.3XML序列化和解析4.3.1XML序列化序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)倪^(guò)程。在序列化對(duì)象時(shí),需要使用XmlSerialize序列化器,它可以將IO流中傳輸?shù)膶?duì)象變得像基本類(lèi)型數(shù)據(jù)一樣,實(shí)現(xiàn)數(shù)據(jù)傳遞的功能。序列化后的對(duì)象以XML形式保存,因此,先來(lái)看一下person.xml文件。4.3XML序列化和解析4.3.1XML序列化XML序列化的示例代碼如下:

XmlSerializerserializer=Xml.newSerializer();serializer.setOutput(fileOutputStream,"utf-8");

serializer.startDocument("utf-8",ture);

serializer.startTag(null,"persons");

serializer.text("張三");

serizlizer.endTag(null,"persons");serializer.endDocument();

創(chuàng)建XmlSerializer對(duì)象設(shè)置文件編碼方式寫(xiě)入XML文件標(biāo)志開(kāi)始節(jié)點(diǎn)寫(xiě)入內(nèi)容結(jié)束節(jié)點(diǎn)文檔結(jié)束4.3

XML序列化和解析

4.3.2案例——XML序列化為了讓初學(xué)者更好的掌握XML序列化。接下來(lái)通過(guò)一個(gè)“XML序列化”的案例來(lái)演示如何將Person對(duì)象序列化為XML文件。

01將XML文件所有內(nèi)容以文檔樹(shù)方式存放在內(nèi)存中。允許使用DOM

API遍歷XML樹(shù)、檢索所需的數(shù)據(jù),這樣便能根據(jù)樹(shù)的結(jié)構(gòu)以節(jié)點(diǎn)形式來(lái)對(duì)文件進(jìn)行操作0203PULL解析SAX解析DOM解析逐行掃描XML文檔,當(dāng)遇到標(biāo)簽時(shí)觸發(fā)解析處理器,采用事件處理的方式解析XML。在讀取文檔的同時(shí)即可對(duì)XML進(jìn)行處理,不必等到文檔加載結(jié)束,相對(duì)快捷。Android集成了PULL解析器,因此,常用的解析方式就是PULL解析使用PULL解析,首先要?jiǎng)?chuàng)建XmlPullParser解析器,該解析器提供了很多屬性,通過(guò)這些屬性可以解析出XML文件中各個(gè)節(jié)點(diǎn)內(nèi)容。4.3

XML序列化和解析4.3.3XML解析4.3

XML序列化和解析4.3.4案例——天氣預(yù)報(bào)大多數(shù)人會(huì)在手機(jī)中安裝一個(gè)天氣預(yù)報(bào)的軟件,如墨跡天氣、懶人天氣等。這些軟件在獲取天氣信息時(shí),都是通過(guò)解析XML文件得到的。下面就通過(guò)一個(gè)案例“天氣預(yù)報(bào)”來(lái)演示如何解析XML文件。4.4

SharedPreferences4.4.1SharedPreferences的使用SharedPreferences是Android平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類(lèi),用于存儲(chǔ)一些應(yīng)用程序的配置參數(shù),例如用戶(hù)名、密碼、自定義參數(shù)的設(shè)置等。SharedPreferences中存儲(chǔ)的數(shù)據(jù)是以key/value鍵值對(duì)的形式保存在XML文件中,該文件位于“data/data/<packagename>/shared_prefs”文件夾中。

4.4

SharedPreferences4.4.1SharedPreferences的使用存儲(chǔ)數(shù)據(jù)

SharedPreferencessp=getSharedPreferences("data",MODE_PRIVATE);Editoreditor=sp.edit();editor.putString("name","傳智播客");editor.putInt("age",8);mit();取出數(shù)據(jù)

SharedPreferencessp=context.getSharedPreferences(); Stringdata=sp.getString("name","");編輯數(shù)據(jù)SharedPreferencessp=context.getSharedPreferences(); Editoreditor=sp.edit();editor.remove("name");editor.clear();mit();4.4

SharedPreferences4.4.2案例——QQ登錄大多數(shù)人使用電腦第一件事基本上都是登錄QQ,為了方便,大家通常會(huì)使用記住密碼功能,直接點(diǎn)擊登錄按鈕即可完成登錄功能。在Android手機(jī)中,同樣可以實(shí)現(xiàn)這個(gè)功能,接下來(lái)通過(guò)一個(gè)“QQ登錄”的案例來(lái)演示如何使用SharedPreferences存儲(chǔ)數(shù)據(jù)。4.5本章小結(jié)本章主要講解了Android中的數(shù)據(jù)存儲(chǔ),首先介紹了Android中常見(jiàn)的數(shù)據(jù)存儲(chǔ)方式,然后講解了文件存儲(chǔ)以及XML序列化和解析,最后講解了SharedPreferences。數(shù)據(jù)存儲(chǔ)是Android開(kāi)發(fā)中非常重要的內(nèi)容,每個(gè)應(yīng)用程序基本上都會(huì)涉及到數(shù)據(jù)存儲(chǔ),因此要求初學(xué)者必須熟練掌握本章知識(shí)。SQLite基本操作SQLite事務(wù)操作ListView控件的使用常見(jiàn)的數(shù)據(jù)適配器第五章SQLite數(shù)據(jù)庫(kù)

?學(xué)習(xí)目標(biāo)3SQLite數(shù)據(jù)庫(kù)重點(diǎn)了解掌握2SQLite的事務(wù)操作

sqlite3.exe工具的使用SQLite的基本操作ListView控件的使用常見(jiàn)的數(shù)據(jù)適配器1

目錄SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介5.1SQLite數(shù)據(jù)庫(kù)的使用

5.2?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)ListView控件5.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)本章小節(jié)5.4

知識(shí)架構(gòu)5.2SQLite數(shù)據(jù)庫(kù)的使用返回目錄5.2.1SQLite操作API5.2.3SQLite事務(wù)操作數(shù)據(jù)庫(kù)的常用操作5.2.2sqlite3工具5.2.4

知識(shí)架構(gòu)5.3ListView控件返回目錄5.3.1ListView控件的使用5.3.3案例——Android應(yīng)用市場(chǎng)5.3.2常用的數(shù)據(jù)適配器(Adapter)5.3.4案例——商品展示5.1

SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介什么是SQLite?5.1

SQLite數(shù)據(jù)庫(kù)簡(jiǎn)介

是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù),第一個(gè)版本誕生于2000年5月。它最初是

為嵌入式設(shè)計(jì)的,占用資源非常低,在內(nèi)存中只需要占用幾百KB的存儲(chǔ)

空間。

SQLite是遵守ACID關(guān)聯(lián)式的數(shù)據(jù)庫(kù)管理系統(tǒng)。ACID是指數(shù)據(jù)庫(kù)事務(wù)正確執(zhí)行的基本要素,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。SQLite沒(méi)有服務(wù)器進(jìn)程,它通過(guò)文件保存數(shù)據(jù),該文件是跨平臺(tái)的,可以放在其他平臺(tái)中使用。并且支持NULL、INTEGER、REAL(浮點(diǎn)數(shù)字)、TEXT(字符串文本)和BLOB(二進(jìn)制對(duì)象)五種數(shù)據(jù)類(lèi)型。

5.2

SQLite數(shù)據(jù)庫(kù)的使用5.2.1SQLite操作APIAndroidSDK提供了一系列對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的類(lèi)和接口。常用的數(shù)據(jù)庫(kù)操作類(lèi)有:

SQLiteOpenHelper類(lèi)該類(lèi)是一個(gè)抽象類(lèi),用于創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)版本更新。SQLiteDatabase類(lèi)該類(lèi)是一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)類(lèi),封裝了一系列數(shù)據(jù)庫(kù)操作的API,可以對(duì)數(shù)據(jù)進(jìn)行增刪改查操作。

Cursor接口是一個(gè)游標(biāo)接口,在數(shù)據(jù)庫(kù)操作中作為返回值,相當(dāng)于結(jié)果集ResultSet。5.2

SQLite數(shù)據(jù)庫(kù)的使用5.2.2數(shù)據(jù)庫(kù)的常用操作AndroidSDK提供的一系列操作SQLite數(shù)據(jù)庫(kù)的API。SQLiteDatabase就是其中的一個(gè),它提供了一些列用于操作數(shù)據(jù)庫(kù)的方法。insert()update()delete()query()5.2.3SQLite事務(wù)操作5.2

SQLite數(shù)據(jù)庫(kù)的使用現(xiàn)實(shí)生活中,經(jīng)常會(huì)進(jìn)行轉(zhuǎn)賬操作,在轉(zhuǎn)賬的過(guò)程中,為了確保轉(zhuǎn)賬金額正確,會(huì)使用事務(wù)進(jìn)行操作。

事務(wù)是針對(duì)數(shù)據(jù)庫(kù)的一組操作,它可以由一條或多條SQL語(yǔ)句組成,同一個(gè)事務(wù)的操作具備同步的特點(diǎn),如果有一條語(yǔ)句無(wú)法執(zhí)行,那么所有語(yǔ)句都不會(huì)執(zhí)行。也就是說(shuō),事務(wù)中的語(yǔ)句要么都執(zhí)行,要么都不執(zhí)行。轉(zhuǎn)入轉(zhuǎn)出銀行轉(zhuǎn)賬操作都執(zhí)行,或都不執(zhí)行5.2.4sqlite3工具5.2

SQLite數(shù)據(jù)庫(kù)的使用在Android開(kāi)發(fā)中,使用真機(jī)測(cè)試時(shí)無(wú)法進(jìn)入data目錄(只有獲得Root權(quán)限的手機(jī)可以進(jìn)入data目錄)因此也無(wú)法直接操作應(yīng)用程序下的數(shù)據(jù)庫(kù)。為了解決該問(wèn)題,SQLite數(shù)據(jù)庫(kù)為開(kāi)發(fā)者提供了sqlite3.exe工具。sqlite3.exe是一個(gè)簡(jiǎn)單的SQLite數(shù)據(jù)庫(kù)管理工具,位于AndroidADTEclipse中的sdk/tools目錄下。

在使用該工具時(shí),首先需要打開(kāi)DOS命令行,依次輸入如下命令:adbshell(掛載到linux的空間)cddata/data(進(jìn)入data/data目錄)cdcn.itcast.db(應(yīng)用程序包名)ls

(Linxus命令列出當(dāng)前文件夾下的文件)

cddatabases(進(jìn)入databases文件夾)ls–l(列出當(dāng)前文件夾所有文件的詳細(xì)格式)sqlite3person.db(使用sqlite3操作應(yīng)用程序下的數(shù)據(jù)庫(kù))select*fromperson;(利用sql語(yǔ)句查詢(xún)person表中的信息)

5.2.4sqlite3工具5.2

SQLite數(shù)據(jù)庫(kù)的使用5.3

ListView控件5.3.1ListView控件的使用在Android開(kāi)發(fā)中,ListView是一個(gè)比較常用的控件。它以列表的形式展示具體數(shù)據(jù)內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長(zhǎng)度自適應(yīng)屏幕顯示。

<ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="match_parent"></ListView>5.3

ListView控件5.3.2常用數(shù)據(jù)適配器(Adapter)在使用ListView時(shí)需要對(duì)其進(jìn)行數(shù)據(jù)適配。為了實(shí)現(xiàn)這個(gè)功能,Android系統(tǒng)提供一系列的適配器(Adapter)對(duì)ListView進(jìn)行數(shù)據(jù)適配。

適配器就像顯示器,把復(fù)雜的數(shù)據(jù)按人們易于接受的方式來(lái)展示。

BaseAdapter即基本的適配器。它實(shí)際上就是一個(gè)抽象類(lèi),該類(lèi)擁有四個(gè)抽象方法。在Android開(kāi)發(fā)中,就是根據(jù)這幾個(gè)抽象方法來(lái)對(duì)ListView進(jìn)行數(shù)據(jù)適配的SimpleAdapterSimpleAdapter繼承自BaseAdapter,實(shí)現(xiàn)了BaseAdapter的四個(gè)抽象方法,分別是getCount()、getItem()、getItemId()、getView()方法。

ArrayAdapterArrayAdapter也繼承自BaseAdapter,與SimpleAdapter相同。ArrayAdapter通常用于適配TextView控件,例如Android系統(tǒng)中的設(shè)置菜單(Setting)。5.3

ListView控件5.3.3案例——Android應(yīng)用市場(chǎng)前面介紹了ListView和幾種常見(jiàn)的數(shù)據(jù)適配器,接下來(lái)通過(guò)一個(gè)案例Android應(yīng)用市場(chǎng)來(lái)演示如何使用ListView以及如何對(duì)其進(jìn)行數(shù)據(jù)適配。

5.3

ListView控件

多學(xué)一招:如何使用其他Adapter適配數(shù)據(jù)前面的案例只運(yùn)用了BaseAdpater適配ListView,使用BaseAdapter適配數(shù)據(jù)需要重寫(xiě)其四個(gè)方法。而SimpleAdapter和ArrayAdapter只需一行代碼即可適配數(shù)據(jù)。ListViewmListView=(ListView)findViewById(R.id.lv);mListView.setAdapter(newArrayAdapter<String>(this,R.layout.list_item,

R.id.tv_list),names));5.3

ListView控件5.3.4案例——商品展示

開(kāi)發(fā)一個(gè)購(gòu)物車(chē),需要將購(gòu)物車(chē)中的商品以列表的形式展示,并且還需要對(duì)購(gòu)物車(chē)中的商品進(jìn)行增刪改查操作。要實(shí)現(xiàn)這些功能就需要使用ListView和SQLite數(shù)據(jù)庫(kù)。接下來(lái)通過(guò)一個(gè)商品展示案例結(jié)合ListView和SQLite數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)在界面上操作數(shù)據(jù)庫(kù)。

5.4本章小結(jié)本章講解了SQLite數(shù)據(jù)庫(kù)和ListView控件的相關(guān)知識(shí),首先簡(jiǎn)單地介紹了SQLite數(shù)據(jù)庫(kù),然后講解了如何使用SQLite數(shù)據(jù)庫(kù)以及ListView。SQLite數(shù)據(jù)庫(kù)和ListView這兩個(gè)知識(shí)點(diǎn)非常重要,在實(shí)際開(kāi)發(fā)中可以實(shí)現(xiàn)很多功能,例如電子商城中的購(gòu)物車(chē)、網(wǎng)易新聞客戶(hù)端等。第六章內(nèi)容提供者創(chuàng)建內(nèi)容提供者訪問(wèn)內(nèi)容提供者內(nèi)容觀察者的使用?學(xué)習(xí)目標(biāo)重點(diǎn)了解掌握創(chuàng)建內(nèi)容提供者訪問(wèn)內(nèi)容提供者12內(nèi)容觀察者的使用3

ContentProvider工作原理

目錄內(nèi)容提供者簡(jiǎn)介6.1創(chuàng)建內(nèi)容提供者

6.2訪問(wèn)內(nèi)容提供者6.3?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)內(nèi)容觀察者的使用6.4?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)本章小結(jié)6.5?點(diǎn)擊查看本小節(jié)知識(shí)架構(gòu)

知識(shí)架構(gòu)6.2創(chuàng)建內(nèi)容提供者6.2.1創(chuàng)建一個(gè)內(nèi)容提供者6.2.2Uri簡(jiǎn)介6.2.3案例——讀取聯(lián)系人信息返回目錄6.2創(chuàng)建內(nèi)容提供者

知識(shí)架構(gòu)返回目錄6.3訪問(wèn)內(nèi)容提供者6.3.1ContentResolver的基本用法6.3.2案例——短信備份

知識(shí)架構(gòu)返回目錄6.4內(nèi)容觀察者的使用6.4.1什么是內(nèi)容觀察者6.4.2案例——短信竊聽(tīng)器6.1內(nèi)容提供者簡(jiǎn)介什么是內(nèi)容提供者??jī)?nèi)容提供者(ContentProvider)是Android系統(tǒng)四大組件之一,用于保存和檢索數(shù)據(jù),是Android系統(tǒng)中不同應(yīng)用程序之間共享數(shù)據(jù)的接口。ContentProvider是不同應(yīng)用程序之間進(jìn)行數(shù)據(jù)交換的標(biāo)準(zhǔn)API,以Uri形式對(duì)外提供數(shù)據(jù),允許其他應(yīng)用操作本應(yīng)用數(shù)據(jù)。其他應(yīng)用則使用ContentResolver,并根據(jù)ContentProvider提供的Uri操作指定數(shù)據(jù)。6.1內(nèi)容提供者簡(jiǎn)介內(nèi)容提供者簡(jiǎn)介6.2創(chuàng)建內(nèi)容提供者6.2.1創(chuàng)建一個(gè)內(nèi)容提供者。定義一個(gè)類(lèi)繼承android.content包下的ContentProvider類(lèi)(抽象類(lèi))。子類(lèi)需要重寫(xiě)它的onCreate()、delete()、getType()、insert()、query()、update()這幾個(gè)抽象方法。ContentProvider是四大組件之一,必須要在清單文件中注冊(cè)<providerandroid:name="cn.itcast.db.PersonDBProvider"android:authorities="cn.itcast.db.personprovider"></provider>是繼承于ContentProvider類(lèi)的全路徑名稱(chēng)表示訪問(wèn)本provider的路徑,注意這里的路徑必須要唯一。6.2創(chuàng)建內(nèi)容提供者6.2.2Uri簡(jiǎn)介ContentProvider的幾個(gè)抽象方法,這幾個(gè)抽象方法中有一個(gè)參數(shù)Uri,它代表了數(shù)據(jù)的操作方法。Uri是由scheme、authorites、path三部分組成。scheme:“content://”是一個(gè)標(biāo)準(zhǔn)的前綴,表明這個(gè)數(shù)據(jù)被內(nèi)容提供者所

控制,它不會(huì)被修改;authorities:“cn.itcast.db.personprovider”是在清單文件中指定的android:authorities屬性值,該值必須唯一,它表示了當(dāng)前的內(nèi)容提供者;path:“/person”代表資源(或者數(shù)據(jù)),當(dāng)訪問(wèn)者需要操作不同數(shù)據(jù)時(shí),這個(gè)部分是動(dòng)態(tài)改變的6.2創(chuàng)建內(nèi)容提供者

6.2.2Uri簡(jiǎn)介Uri.parse(Stringstr)方法是將字符串轉(zhuǎn)化成Uri對(duì)象的。為了解析Uri對(duì)象,Android系統(tǒng)提供了一個(gè)輔助工具類(lèi)UriMatcher用于匹配Uri。UriMatcher中的常用方法如表所示:方法名稱(chēng)方法說(shuō)明publicUriMatcher(intcode)創(chuàng)建UriMatcher對(duì)象時(shí)調(diào)用,參數(shù)通常使用UriMatcher.NO_MATCH,表示路徑不滿(mǎn)足條件返回-1publicvoidaddURI(Stringauthority,Stringpath,intcode)添加一組匹配規(guī)則,authority即Uri的authoritites部分,path即Uri的path部分publicintmatch(Uriuri)匹配Uri與addURI方法相對(duì)應(yīng),匹配成功則返回addURI方法中傳入的參數(shù)code的值。6

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論