輕量級(jí)數(shù)據(jù)庫共享資源天學(xué)會(huì)android開發(fā)_第1頁
輕量級(jí)數(shù)據(jù)庫共享資源天學(xué)會(huì)android開發(fā)_第2頁
輕量級(jí)數(shù)據(jù)庫共享資源天學(xué)會(huì)android開發(fā)_第3頁
輕量級(jí)數(shù)據(jù)庫共享資源天學(xué)會(huì)android開發(fā)_第4頁
輕量級(jí)數(shù)據(jù)庫共享資源天學(xué)會(huì)android開發(fā)_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

14天學(xué)會(huì)安卓開作者:神秘的N(英文名聯(lián)14天學(xué)會(huì)安卓開作者:神秘的N(英文名聯(lián)系方式:369428455(反饋交流群:284552167(示例,原文檔下載日期版權(quán)為作者所有,如有轉(zhuǎn)載請(qǐng)注明出第一天Android1.1android1.1.1Android是什么Android開放源代碼,Android遵從ApacheSoftwareLicense(ASL)2.0版本的協(xié)Android于2007年11月5日開放手機(jī)聯(lián)盟成立時(shí)發(fā)注:開放手機(jī)聯(lián)盟1.1.2Android的特點(diǎn)應(yīng)用框架可以重復(fù)使用,其組件也可以更換Dalvik虛擬機(jī)針對(duì)移動(dòng)設(shè)備進(jìn)行了優(yōu)化優(yōu)化的圖形能力支持2D、3D圖形(OpenGLES1.0。優(yōu)化的圖形能力支持2D、3D圖形(OpenGLES1.0。SQLite作為結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)GSMTelephony(hardwaredependent)支持照相機(jī)、GPS、指南針和加速度儀等傳感器硬件豐富的開發(fā)環(huán)境。包括模擬機(jī)、調(diào)試工具、內(nèi)存運(yùn)行檢測,以及為EclipseIDE所寫的插件1.1.3Android優(yōu)缺點(diǎn)優(yōu)源代碼完全開放良好的盈利模式(3/7開),產(chǎn)業(yè)鏈條的各方:運(yùn)營商、制造商、獨(dú)立軟件生產(chǎn)商都可以獲得不錯(cuò)Android的源代碼遵循ApacheV2軟件許可,而不是通常的GPLv2許可。有利于商業(yè)開發(fā)具有強(qiáng)大的Linux社區(qū)的支持缺Google提供了一套Java核心包(J2SE5,J2SE6)的有限子集,尚不承諾遵守Java任何Java規(guī)范,可現(xiàn)有應(yīng)用完善度不太夠,需要的開發(fā)工作量較大模擬器調(diào)試手段不十分豐富,速度慢Android架LinuxKernel&Android內(nèi)Android基于Linux內(nèi)核,但不是Linux內(nèi)核位于硬件和軟件堆之間的抽象系統(tǒng)的初始化和編程接口和標(biāo)準(zhǔn)的Android基于Linux內(nèi)核,但不是Linux內(nèi)核位于硬件和軟件堆之間的抽象系統(tǒng)的初始化和編程接口和標(biāo)準(zhǔn)的LinuxC/C++庫:被各種Android組件使用通過應(yīng)用程序框架開發(fā)者可以使用其功能包括:媒體庫:MPEG4H.264MP3JPGPNG.....WebKit/LibWebCore:Web瀏覽SQLite關(guān)系數(shù)據(jù)庫引2D,3D圖形庫、引Function基于開源WebKit的瀏基于PacketVideoOpenCORE平臺(tái)輕型數(shù)據(jù)庫,支持多種平NativeServers-為多種應(yīng)用提供2D、3D表面設(shè)NativeServers-音頻處HardwareAbstraction硬件虛擬UserspaceC/C++library硬件接口驅(qū)使Android平臺(tái)邏輯與硬件接口分DVMvsDalvikJavaApplicationsActivity管理運(yùn)行硬件接口驅(qū)使Android平臺(tái)邏輯與硬件接口分DVMvsDalvikJavaApplicationsActivity管理運(yùn)行應(yīng)用程Content在各應(yīng)用之間共享數(shù)Resource管理非代碼資Notification顯示用戶提示和狀態(tài)Views可擴(kuò)展顯示,可構(gòu)建應(yīng)用和框架簡化組用Java編寫應(yīng)用程JAVA編寫的應(yīng)用程1.2搭建android環(huán)注:如果想從頭開始學(xué)怎么搭建android開發(fā)環(huán)境的請(qǐng)從1.2.1開如果想直接學(xué)開發(fā)了,請(qǐng)?zhí)^如果想直接學(xué)開發(fā)了,請(qǐng)?zhí)^此步驟,到1.2.6節(jié)直接下載谷歌提供的開發(fā)工具進(jìn)行開發(fā)1.2.1安裝JavaJDK并配置java環(huán)境變量/technetwork/java/javase/downloads/index.html(官網(wǎng)下載地址)/otn-pub/java/jdk/6u37-b06/jdk-6u37-windows-i586.exe(x86直接下載地址/otn-pub/java/jdk/6u37-b06/jdk-6u37-windows-x64.exe(x64直接下載地址安裝JDK略打開環(huán)境變量窗口方法:右鍵【我的電腦】--單擊【屬性】--單擊【高級(jí)】--單擊【環(huán)境變量】在上方的用戶變量中依次新建如下變量,并分別填入如下路徑變量變量值:C:Javajdk1.6.0_22(此路徑為JAVA安裝路徑變量變量變量變量測試環(huán)境變量配置是否成【開始】--【運(yùn)行】--輸入【cmd】--輸入【javac】--按【回車鍵】若看到以下信息,則代表配置成功1.2.2下載1.2.2下載eclipse安裝ADT插Eclipse下載地址/downloads/(java和J2EE都行)/technology/phoenix/torrents/juno/eclipse-jee-juno-SR1-win32.zip.torrent(x86種/technology/phoenix/torrents/juno/eclipse-jee-juno-SR1-win32.zip.torrentX64安裝注意安裝注意:安裝ADT的方法有兩Name:AndriodPluginLocation:https://dl-執(zhí)意想要執(zhí)意想要在線更新的朋友,我們只需要配置一下hosts文件(翻墻不用我說吧Hosts文件只需要在C盤搜索一下就出來在文件的末尾添加下面一句:dl-(記得右鍵吧hosts文件只讀的勾去了二離線安裝(離線二離線安裝(離線安裝要斷網(wǎng),不然它會(huì)自動(dòng)聯(lián)網(wǎng)安裝的離線版ADT下載離線更新有兩種方如果推薦使用的方法不行,哪就用其他方法吧1.2.3安裝androidsdk并更新版注意:記得選第二個(gè),默認(rèn)的是讓你選路徑下載SDK下載SDK:離線安裝離線安裝找到SDK路徑應(yīng)用一下就可以管理自管理自己的SDK,升級(jí)或者更在自己在自己需要的版本上打勾然后按install(一般開發(fā)都用2.1,谷歌會(huì)提示你95%的開發(fā)者都在用2.1之類話的點(diǎn)擊install后如下圖,選擇所有再點(diǎn)更新完后就大功告更新完后就大功告成1.2.4配置android環(huán)境變量在上方的用戶變量中找到之前創(chuàng)建的【PATH】變量,雙擊它,然后在【變量值】的最后面添加上內(nèi);E:Androidandroid-sdk-windowsools;E:Androidandroid-sdk-windowsplatform-其中的分號(hào)不能少,分號(hào)在這里是起到分隔的作用配置完成之后,分別點(diǎn)擊【開始】--【運(yùn)行】--輸入【cmd】--輸入【android-h】--按【回車鍵】,若到以下信息,則代表配置成功1.2.51.2.5配置ADV安卓虛擬機(jī)helloandroid測1.2.6特別贈(zèng)1.2.6特別贈(zèng)送:直接下載AndroidDeveloperTools即可省略以上5個(gè)步直接下載AndroidDeveloperTools即可使官方已經(jīng)推出集成ADT和最新SDK(4.2版本)的eclipse了命名為AndroidDeveloperTools下載地址:/android/adt/adt-bundle-windows-或者聯(lián)系作者獲如需安裝其他版本SDK請(qǐng)看第3寫第一寫第一個(gè)android程第一個(gè)第一個(gè)程序就創(chuàng)建好了,如下圖啟動(dòng)你的程如圖如圖,測試成功.第一天的android課程結(jié)束源代碼下載HelloAndroid源源代碼下載HelloAndroid源工程結(jié)構(gòu)解src:Java源2.1.1工程結(jié)構(gòu)解src:Java源代碼目錄(只允許有一個(gè)包AndroidMainfest.xml:清單文件,描述應(yīng)用程序構(gòu)成、組件、權(quán)限等配置信息)gen/R.java:資源文件,修改后自動(dòng)重新生成Android:assets:靜態(tài)資產(chǎn)文件(用于存放不編譯的資源最大支持1G)drawable:程序圖標(biāo)(ico.png)layout:布局文件classes.dex:編譯的java二進(jìn)制碼Android平臺(tái)上的可執(zhí)行文件ActivityLifeCycle.apk:Android安裝包(APK包)resources.ap_:資源信息文2.1.2classes.dex:編譯的java二進(jìn)制碼Android平臺(tái)上的可執(zhí)行文件ActivityLifeCycle.apk:Android安裝包(APK包)resources.ap_:資源信息文2.1.2Android中JAVA包功能描android.app:提供高層程序模型、提供基本的運(yùn)行環(huán)境android.content:對(duì)設(shè)備上的數(shù)據(jù)進(jìn)行訪問和發(fā)布的類android.database:通過內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫android.graphics:底層的圖形庫android.location:定位和相關(guān)服務(wù)的類android.media:管理多種音頻、視頻的媒體接口:提供幫助網(wǎng)絡(luò)訪問的類android.os:提供了系統(tǒng)服務(wù)、消息傳輸、IPC機(jī)制android.opengl:提供OpenGL的工具vider:提供類訪問Android內(nèi)容提供者android.telephony:提供與撥打電話相關(guān)的API交互android.view:提供基礎(chǔ)的用戶界面接口框架android.util:涉及工具性的方法,例如時(shí)間日期的操作android.webkit:默認(rèn)瀏覽器操作接口android.widget:包含各種UI元素在應(yīng)用程序的屏幕中2.1.3Android程序核心組View:界面視圖、組織UI控件Intent:意圖,支持組件間通信Activity:處理界面與UI互動(dòng)ContentProvider:存儲(chǔ)共享數(shù)據(jù)IntentReceiver:接收信息及事件處Service:后臺(tái)服務(wù)(如硬件與驅(qū)動(dòng)的服務(wù))Notification:消息與通知2.2了解2.2.1Activity的概活動(dòng)是最基本的Android應(yīng)用程序組當(dāng)一個(gè)新的屏幕打開后,前一個(gè)屏幕將會(huì)暫停,并保存在歷史堆棧中。用戶可以返回到歷史堆棧中的前一個(gè)屏幕。當(dāng)屏幕不再使用時(shí),還可以從歷史堆棧中刪除。Andrid應(yīng)用的運(yùn)行屏幕。所有應(yīng)用的Activity都繼承于android.app.Activity2.2.2Activity的生命周voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidActivity有三個(gè)狀態(tài)voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidActivity有三個(gè)狀態(tài)當(dāng)它在屏幕前臺(tái)時(shí)(位于當(dāng)前任務(wù)堆棧的頂部),它是激活或運(yùn)行狀態(tài)。它就是響應(yīng)用戶操作Activity當(dāng)它失去焦點(diǎn)但仍然對(duì)用戶可見時(shí)(如右圖),它處于暫停狀態(tài)。即在它之上有另外一個(gè)Activity。這個(gè)Activity也許是透明的,或者沒有完全覆蓋全屏,所以被暫停的Activity見。暫停的Activity仍然是存活狀態(tài)(它保留著所有的狀態(tài)和成員信息并保持和窗口管理器的連接),但系統(tǒng)處于極低內(nèi)存時(shí)仍然可以殺死這個(gè)Activity。完全被另一個(gè)Activity這七個(gè)方法定義了Activity的完整生命周期。實(shí)現(xiàn)這些方法可以幫助我們監(jiān)視其中的三個(gè)嵌套生命周期環(huán)Activity的可視生命周期自onStart()調(diào)用開始直到相應(yīng)的onStop()屏幕上看到Activity,盡管它也許并不是位于前臺(tái)或者也不與用戶進(jìn)行交互。在這兩個(gè)方法之間,我們可以保留用來向用戶顯示這個(gè)Activity所需的資源。例如,當(dāng)用戶不再看見我們顯示的內(nèi)容來注消。onStart()和onStop()方法可以隨著應(yīng)用程序是否為用戶可見而被多次調(diào)用。Activity的前臺(tái)生命周期自onResume()調(diào)用起,至相應(yīng)的onPause()調(diào)用為止。在此期間,t位于前臺(tái)最上面并與用戶進(jìn)行交互。Activity會(huì)經(jīng)常在暫停和恢復(fù)之間進(jìn)行狀態(tài)轉(zhuǎn)換——例如當(dāng)設(shè)備轉(zhuǎn)入休眠狀態(tài)或者有新的Activity啟動(dòng)時(shí),將調(diào)用onPause方法。當(dāng)Activity獲得結(jié)果或者接收到新的Intent時(shí)會(huì)調(diào)用onResume()方法。關(guān)于前臺(tái)生命周期循環(huán)的例子請(qǐng)見PPT下方備注欄(活動(dòng)通俗來說就活動(dòng)的可操縱的窗口2.3了解2.3.1什么是意圖Android基本的設(shè)計(jì)理念是鼓勵(lì)減少組件間的耦I(lǐng)ntent可以劃分成顯式意圖和隱式意圖隱式意圖:沒有調(diào)用Intet.setComponet()或Itent.stClass方法指定組件名或類對(duì)象的Intet為隱式意圖。Andrid會(huì)根據(jù)itent-filter中設(shè)置的動(dòng)作(actin)、類別(ctegoy)、數(shù)據(jù)(URI型)找到最合適的組件來處理這個(gè)意圖。IntentFiltr(過濾器)其實(shí)就是用來匹配隱式Itent的。想要接收使用strtActiviy方法傳遞的隱式意圖的活動(dòng)必須在它們的意圖過濾器中包含(簡單舉個(gè)例子,我意圖打劫,所以意圖就是那么一回事2.4Bundle類的作2.4Bundle類的作HashMap類型的變量來存放putXxx()方法放入的值publicfinalclassBundleimplementsParcelable,CloneableMap<String,Object>mMap;publicBundle(){mMap=newHashMap<String,}publicvoidputString(Stringkey,String{mMap.put(key,}publicStringgetString(String{Objecto=mMap.get(key);return(String)o;........//類型轉(zhuǎn)換失敗后會(huì)返回null,這里省略了類型轉(zhuǎn)換失敗后的處理代}}在調(diào)用Bundle對(duì)象的getXxx()方法時(shí),方法內(nèi)部會(huì)從該變量中獲取數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換,換成什么類型由方法的Xxx決定,getXxx()方法會(huì)把轉(zhuǎn)換后的值返回 回顧 看看安卓程序是怎么運(yùn)作為什么到了這里我們才講android應(yīng)用是怎么運(yùn)作的呢?到了這里我們已經(jīng)初步了解activity,和intent,Bundle了<intent-filter>標(biāo)簽監(jiān)聽器,監(jiān)聽activity第一個(gè)那么我們就可以去看看MainActivity首先我們看看是不是有activity的首先我們看看是不是有activity的onCreate啊!上面說,不論如何都要先執(zhí)行它,然后傳進(jìn)來一個(gè)Bundle的值,然后又調(diào)用自身這個(gè)類!底層代碼已經(jīng)幫我們實(shí)現(xiàn)好了,我們只需要用就行了.然后stContetView是得到內(nèi)容視圖,得到那個(gè)視圖呢?剛剛我們不是說了嗎,注冊(cè)一個(gè)XML就會(huì)有一個(gè)R值.獲取到activity_main這個(gè)視圖那么我們來看看布局文件xml里是什么里面就一個(gè)文本框,字符串是找strings里邊的一個(gè)字符所以我們創(chuàng)建helloandroid的時(shí)候,看到所以我們創(chuàng)建helloandroid的時(shí)候,看到的就是helloworld了在此我們了解完了android的運(yùn)作過程,那么我們來寫第二個(gè)程序吧2.6寫第二個(gè)程序按照創(chuàng)建helloandroid程序的方法創(chuàng)建一個(gè)activityLifeCycle的項(xiàng)然后點(diǎn)擊包右鍵新建一個(gè)為應(yīng)用添加新的第一步:新建一個(gè)繼承Activity的類,如publicclassNewActivityextendsActivity@OverrideprotectedvoidonCreate(Bundle{//這里可以使用setContentView(R.layout.xxx)顯示某個(gè)視圖}}第二步:需要在功能清單AndroidManifest.xml文件中添加進(jìn)上面Activity配置代碼(紅色部分<manifest<applicationandroid:icon="@drawable/icon"<activityandroid:name=".NewActivity"android:label="新activity的頁面標(biāo)題android:name屬性值的前面加了一個(gè)點(diǎn)表示NewActivity是當(dāng)前包c(diǎn)om.lxt008下可以這樣寫:<activityandroid:name=“.user.NewActivity“/>這里說明一下onCreate是怎么弄出來的在前面打勾按在前面打勾按下打開新的Activity,不傳遞參數(shù)在一個(gè)Activity中可以使用系統(tǒng)提供的startActivity(Intentintent)方法打開新的Activity,在打開新Activity前,你可以決定是否為新的Activity傳遞參數(shù)第一種:打開新的Activity,不傳遞參publicclassMainActivityextendsActivitypublicclassMainActivityextendsActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState)Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//新建一個(gè)顯式意圖,第一個(gè)參數(shù)為當(dāng)前Activity//第二個(gè)參數(shù)為你要打開的ActivitystartActivity(newIntent(MainActivity.this,}}學(xué)過java的都會(huì)問,為什么不直接NEW一個(gè)按鈕啊,那么麻煩,android這樣是為了降低耦合度,高內(nèi)聚,低合當(dāng)讓你也可以再xml里自己寫控我們?cè)倩剡^頭來看button.setOnClickListener(newOnClickListener(){這里的setOnClickListener是放置一個(gè)點(diǎn)擊監(jiān)聽器里邊有new了一個(gè)內(nèi)部為什么要這樣寫?當(dāng)讓你也可以不這樣寫,這樣寫是為了方便,學(xué)過java的應(yīng)該都知道吧!你另外寫一個(gè)類然后再調(diào)用它也可以然后再調(diào)用它也可以實(shí)現(xiàn)OnClickListener接口自動(dòng)實(shí)現(xiàn)onClick方這句可以分開來Intentintent=newintent.setClass(MainActivity.this,NewActivity.class);剛剛我們學(xué)了意圖,意圖是活動(dòng)之間傳遞信息的信使,第一個(gè)參數(shù)是自身的一個(gè)活動(dòng),第二個(gè)是要轉(zhuǎn)過去活動(dòng)使用過濾器如何弄出快捷欄里沒有的話到Other里邊相信學(xué)過java的對(duì)輸出語句并相信學(xué)過java的對(duì)輸出語句并不陌生,點(diǎn)擊上面綠色的那個(gè)加號(hào)就是添加過濾器的,byloglevel是日志型,如上圖右邊的箭頭,從上到下有所有日志,捉蟲日志,信息日志,警告日志,錯(cuò)誤日志設(shè)置syso過濾器Syso的記錄日志我覺得沒那么亂,容易看出來,單獨(dú)顯示出來的是所有信(詳情請(qǐng)參考demo,打開新的Activity,傳遞參數(shù)給它第二種:打開新的Activity,并傳遞若干個(gè)參數(shù)給它publicclassMainActivityextendsActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState)button.setOnClickListener(newpublicvoidonClick(Viewv)button.setOnClickListener(newpublicvoidonClick(Viewv)Intentintent=newIntent(MainActivity.this,BundlebundlenewBundle();//該類用作攜帶數(shù)據(jù)bundle.putString("name","lxt008");bundle.putInt("age",80);}});}在新的Activity中接收前面Activity傳遞過來的參數(shù)publicclassNewActivityextendsActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState)Bundlebundle=this.getIntent().getExtras();Stringname=bundle.getString("name");intage=`得到新Activity關(guān)閉后返回的數(shù)據(jù)如果你想在Activity中得到新打開Activity關(guān)閉后返回的數(shù)據(jù),你需要使用系統(tǒng)提供的startActivityForResult(Intentintent,intrequestCode)方法打開新的Activity,新的Activity關(guān)閉后會(huì)向前面的Activity傳回?cái)?shù)據(jù),為了得到傳回的數(shù)據(jù),你必須在前面的Activity中重寫onActivityResult(intrequestCode,intresultCode,Intentdata)方法publicclassMainActivityextendsActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState)Buttonbutton=(Button)button.setOnClickListener(newView.OnClickListener(){//點(diǎn)擊該按鈕會(huì)打publicvoidonClick(Viewv){//第二個(gè)參數(shù)為請(qǐng)求碼,可以根據(jù)業(yè)務(wù)需求自己編startActivityForResult(newIntent(MainActivity.this,NewActivity.class),}//第一個(gè)參數(shù)為請(qǐng)求碼,即調(diào)用startActivityForResult()傳遞過去的//第二個(gè)參數(shù)為結(jié)果碼,結(jié)果碼用于標(biāo)識(shí)返回?cái)?shù)據(jù)來自哪個(gè)新@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,IntentStringresult=data.getExtras().getString(“result”));//得到新Activity關(guān)閉后返回的數(shù)}當(dāng)新Activity關(guān)閉后,新Activity返回的數(shù)據(jù)通過Intent進(jìn)行傳遞,android平臺(tái)會(huì)調(diào)用前面ActivityonActivityResult()方法,把存放了返回?cái)?shù)據(jù)的Intent作為第onActivityResult()方法,把存放了返回?cái)?shù)據(jù)的Intent作為第三個(gè)輸入?yún)?shù)傳入,在onActivityResult()方中使用第三個(gè)輸入?yún)?shù)可以取出新Activity返回的數(shù)據(jù)使用startActivityForResult(Intentintent,intrequestCode)方法打開新的Activity,新Activity關(guān)閉前需向前面的Activity返回?cái)?shù)據(jù)需要使用系統(tǒng)提供的setResult(intresultCode,Intentdata)方法實(shí)現(xiàn)publicclassNewActivityextendsActivity@OverrideprotectedvoidonCreate(BundlesavedInstanceState)View.OnClickListener(){publicvoidonClick(Viewv)Intentintent=newIntent();//數(shù)據(jù)是使用Intent返回intent.putExtra(“result”,“success”);//把返回?cái)?shù)據(jù)存入IntentNewActivity.this.setResult(RESULT_OK,intent);//設(shè)置返回?cái)?shù)據(jù)}}setResult()方法的第一個(gè)參數(shù)值可以根據(jù)業(yè)務(wù)需要自己定義,上面代碼中使用到的RESULT_OK是系A(chǔ)ctivity類定義的一個(gè)常量,值為-1,代碼片斷如下publicclassandroid.app.Activity RESULT_CANCELED=RESULT_OK=-RESULT_FIRST_USER=}請(qǐng)求碼的作用使用startActivityForReslt(Itentintent,itreuestCode)方法打開新的Activity,我們需要為statActivityForReslt()方法傳入一個(gè)請(qǐng)求碼(第二個(gè)參數(shù))。請(qǐng)求碼的值是根據(jù)業(yè)務(wù)需要由自已設(shè)定,用于標(biāo)識(shí)請(qǐng)求來源。例如:一個(gè)Activity有兩個(gè)按鈕,點(diǎn)擊這兩個(gè)按鈕都會(huì)打開同一個(gè)Activity,不管是那個(gè)按鈕打開新Activity,當(dāng)這個(gè)新Activity關(guān)閉后,系統(tǒng)都會(huì)調(diào)用前面Activity的onAciviyResltitreqestCod,intresltCode,Intetdta)方法。在onActivityReslt()方法如果需要知道新Activity個(gè)按鈕打開的,并且要做出相應(yīng)的業(yè)務(wù)處理,這時(shí)可以這樣做publicvoidonCreate(BundlesavedInstanceState)View.OnClickListener(){publicvoidonClick(Viewv)startActivityForResult(newIntent(MainActivity.this,NewActivity.class),View.OnClickListener(){publicvoidonClick(Viewv)startActivityForResult(newIntent(MainActivity.this,NewActivity.class),@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)casecase2://來自按鈕2的請(qǐng)求,作相應(yīng)業(yè)務(wù)處}}}結(jié)果碼的作用這些新Activity關(guān)閉后,系統(tǒng)都會(huì)調(diào)用前面Activity的onActivityResult(intrequestCode,intresultCode,Intentdata)方法。為了知道返回的數(shù)據(jù)來自于哪個(gè)新Activity,在onActivityResult()方法中可以這樣做(ResultActivity和NewActivity為要打開的新classResultActivityextendsActivityResultActivity.this.setResult(1,intent);}classNewActivityextendsActivityNewActivity.this.setResult(2,intent);}classMainActivityextendsActivity{//在該Activity會(huì)打開ResultActivity和NewActivity@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)se1:ResultActivity的返回?cái)?shù)據(jù)case2:NewActivity的返回}}}源代碼下載(詳情請(qǐng)參考demo,2.1View與2.1.1Android界面元2.1View與2.1.1Android界面元View:視圖組件Wigets:UI元素Menus:2.1.2認(rèn)識(shí)設(shè)置是否可以獲得焦點(diǎn)2.1.3認(rèn)識(shí)負(fù)責(zé)對(duì)添加進(jìn)ViewGroup的View進(jìn)行布一個(gè)ViewGroup可以加入到另一個(gè)View與ViewGroup的關(guān)2.2事件處理機(jī)控件事件通過設(shè)置其控件的監(jiān)聽器來監(jiān)聽并處理事控件事件通過設(shè)置其控件的監(jiān)聽器來監(jiān)聽并處理事觸筆點(diǎn)擊事件:通過實(shí)現(xiàn)onTouchEvent方其他事件參考相應(yīng)UI組件的2.2.1Toast控在視圖中給用戶顯示的短小的提示消息Toast.makeText(this,string,LENGTH_LONG:長時(shí)間顯LENGTH_SHORT:短時(shí)間顯2.2.2事件處理{classActivity01extends{voidonCreate(Bundle//獲得Button對(duì)Buttonbutton_ok=(Button)//設(shè)置Button控件監(jiān)聽button_ok.setOnClickListener(newButton.OnClickListener()publicvoidonClick(Viewv){//這里處理事DisplayToast("點(diǎn)擊了OK按鈕}{}/*按鍵按下所觸發(fā)的事件publicbooleanonKeyDown(intkeyCode,KeyEvent{switch{case}returnsuper.onKeyDown(keyCode,}/*按鍵彈起所觸發(fā)的事件onKeyUp(intkeyCode,KeyEventevent)(keyCode)}super.onKeyUp(keyCode,}onKeyMultiple(intkeyCode,intKeyEventevent)super.onKeyMultiple(keyCode,repeatCount,}/*觸筆事件publicbooleanonTouchEvent(MotionEvent{intiAction=if(iAction==MotionEvent.ACTION_CANCEL||iAction==MotionEvent.ACTION_DOWN||iAction==MotionEvent.ACTION_MOVE){return}//得到觸筆點(diǎn)擊的{intiAction=if(iAction==MotionEvent.ACTION_CANCEL||iAction==MotionEvent.ACTION_DOWN||iAction==MotionEvent.ACTION_MOVE){return}//得到觸筆點(diǎn)擊的位intx=(int)event.getX();inty=(int)DisplayToast("觸筆點(diǎn)擊坐標(biāo)return}/*顯示ToastpublicvoidDisplayToast(String{}}詳情請(qǐng)參考2.3布界面布局方FrameLayout(框架布局2.3.1LinearLayout(線性布局是常用的布局之一個(gè)組件一行的形式顯示出分垂直(vertical)與水平(horizontal)兩種main.xml:<LinearLayoutandroid:text="第一行android:text="第二行android:text="第三行android:text="第四行main.xml:android:text="第一行android:text="第二行android:text="第三行android:text="第四行main.xml:<LinearLayoutandroid:text="第一列android:text="第二列android:text="第三列android:text="第四列2.3.2AbsoluteLayout(絕對(duì)布局絕對(duì)布局根據(jù)設(shè)定好的坐標(biāo)進(jìn)行定位顯AbsoluteLayout兩個(gè)重要的屬性android:layout_x組2.3.2AbsoluteLayout(絕對(duì)布局絕對(duì)布局根據(jù)設(shè)定好的坐標(biāo)進(jìn)行定位顯AbsoluteLayout兩個(gè)重要的屬性android:layout_x組件在屏幕中的X坐android:layout_y組件在屏幕中的Y坐2.3.3RelativeLayout(相對(duì)布局是按照相對(duì)某個(gè)組件的位置來進(jìn)行布局,也就是說參考某個(gè)組件,置于此組件的上、下、左、其中幾個(gè)重要的屬性android:layout_below=“組件ID”在某組件下面android:layout_above=“組件ID”在某組件上面android:layout_toRightOf=“ID”在某組件右邊android:layout_toLeftOf=“ID”在某組件左<RelativeLayout<TextViewandroid:text="請(qǐng)輸入<EditTextandroid:id="@+id/entry" android:text="確定android:text="取消RelativeLayout2.3.4TableLayout(表格布局是比較常用的布局,它是按照表格的方式來布局整個(gè)畫面TableRow:TableLayout中需要嵌入行,然后將組件置于TableRow中才能顯示成Table的形幾個(gè)重要的屬性android:layout_weight:比TableRow:<TableLayoutandroid:text="打開android:layout_weight:比TableRow:<TableLayoutandroid:text="打開android:text="Ctrl-android:text="Ctrl-android:text="Ctrl-Shift-android:background="#FF909090"/>android:text="保存android:text="另存為<TextViewandroid:text="*”android:padding="3dip"android:text="導(dǎo)入android:padding="3dip<TextViewandroid:text="*”android:padding="3dip"<TextViewandroid:text="導(dǎo)出android:padding="3dip"<TextViewandroid:text="Ctrl-E”android:gravity="right”android:padding="3dip"android:layout_height="2dip”android:background="#FF909090"android:layout_column="1”android:text="退出"android:padding="3dip"/>TableLayout2.3.5FrameLayout(框架布局是一個(gè)比較TableLayout2.3.5FrameLayout(框架布局是一個(gè)比較特殊的布此布局一般放一個(gè)組件,并且這個(gè)組件是靠左上角顯示如果加入多個(gè)組件,那將會(huì)顯示最上層的一個(gè)組件>android:text="GoldenGate"FrameLayout2.3.6布局之間的關(guān)LinearLayout、AbsoluteLayout、RelativeLayout、FrameLayout均是ViewGroupTableLayout則是LinearLayout子類,如果TableLayout中的組件沒有放入TableRow中的話,那么就按照LinearLayout顯在Android中,布局是可以相互嵌套的,比如LinearLayout中能夠嵌入TableLayout一2.4樣式和主題android中的樣式和CSS樣式作用相似,都是用于為界面元素定義顯示風(fēng)格,它是一個(gè)包含一個(gè)或者個(gè)view控件屬性的集合。如:需要定義字體的顏色和大小在CSS中是這樣定義的.lxt{COLOR:#0000CC;font-可以像這在CSS中是這樣定義的.lxt{COLOR:#0000CC;font-可以像這樣使用上面的css樣式:<div在Android中可以這樣定義樣式在res/values/styles.xml文件中添加以下內(nèi)<?xmlversion="1.0"encoding="utf-<stylename=“l(fā)xt”>為樣式定義一個(gè)全局唯一的名字<itemname="android:textSize">18px</item>name屬性為樣式要用在的View控件持有的屬<item-在layout文件中可以像下面這樣使用上面的android樣式<?xmlversion="1.0"encoding="utf- .....<style>元素中有一個(gè)parent屬性。這個(gè)屬性可以讓當(dāng)前樣式繼承一個(gè)父樣式,當(dāng)前樣式可以繼承到父式的值。當(dāng)然,如果父樣式的值不符合你的需求,你也可以對(duì)它進(jìn)行修改,如下<?xmlversion="1.0"encoding="utf-<style<itemname="android:textSize">18px</item>name屬性為樣式要用在的View控件持有的屬<item<stylename="sublxt"<item-android中主題也是用于為應(yīng)用定義顯示風(fēng)格,它的定義和樣式的定義相同,如下<?xmlversion="1.0"encoding="utf-<style<itemname=“android:windowNoTitle”>true</item>沒標(biāo)<itemname=“android:windowFullscreen”>?android:windowNoTitle</item全屏顯上面<itemname=“android:windowNoTitle”>true</item>沒標(biāo)<itemname=“android:windowFullscreen”>?android:windowNoTitle</item全屏顯上面“?android:windowNoTitle”中的問號(hào)用于引用在當(dāng)前主題中定義過的資源的值下面代碼顯示在AndroidManifest.xml中如何為應(yīng)用設(shè)置上面定義的主題<applicationandroid:icon="@drawable/icon"除了可以在AndroidManifest.xml中設(shè)置主題,同樣也可以在代碼中設(shè)置主題,如下盡管在定義上,樣式和主題基本相同,但是它們使用的地方不同。樣式用在單獨(dú)的View,如:EditText、TextView等;主題通過AndridManifest.xml中的和用在整個(gè)應(yīng)用或者某個(gè)Activity,主題對(duì)整個(gè)應(yīng)用或某個(gè)Activity存在全局性影響。如果一個(gè)應(yīng)用使用了主題,同時(shí)應(yīng)用下的view么當(dāng)主題與樣式屬性發(fā)生沖突時(shí),樣式的優(yōu)先級(jí)高于主題。另外android系統(tǒng)也定義了一些主題,例要查閱這些主題,可以在文檔的reference:android-->R.style中查看。源代碼下4.1基本控件介本章全部都是控件,自己拖拽一下,研究一下就行了,熟悉android應(yīng)該怎么用,主要就是看demo,自己拖拽,1、Button按研究2、TextView2、TextView文本框研究3、EditText3、EditText文本編輯框研究4、CheckBox多項(xiàng)選擇每個(gè)4、CheckBox多項(xiàng)選擇每個(gè)多選框都是獨(dú)立的,可以通過迭代所有多選框,然后根據(jù)其狀態(tài)是否被選中再獲取其值調(diào)用setOnCheckedChangeListener()方法,處理多選框被選擇事件,CompoundButton.OnCheckedChangeListener實(shí)例作為參數(shù)傳研究5、RadioButton5、RadioButton單項(xiàng)選擇研究6、Spinner下拉列表6、Spinner下拉列表AdapterView.OnItemSelectedListener實(shí)例作為參數(shù)傳下拉列表框—很多時(shí)候顯示在下拉列表框的值并不是希望得到的值,如果要做一個(gè)聯(lián)系人下拉列表框,列表框列出的是聯(lián)系人的姓名,因?yàn)樾彰锌赡芟嗤?,所以我們希望得到的值?yīng)該為該聯(lián)系人的id,要實(shí)現(xiàn)這種需求我們需要自定義Adapter,當(dāng)然自定義Adaptr寫Adapter,又能實(shí)現(xiàn)我們的需求,那是最好不過的了。通過觀察ArrayAdaptr中g(shù)tView(itpsition,iewconvertiew,ViewGrouparent)的內(nèi)部代碼發(fā)現(xiàn),如果為ArrayAdater指定的實(shí)際泛型參數(shù)類型沒有實(shí)現(xiàn)CharSequence(字符串)接口,將會(huì)調(diào)用該類型對(duì)象的toStin()向下拉列表框輸出顯示值。利用這個(gè)特點(diǎn)我們可以重寫javaBean的toStin()向下拉列表框提供顯示值。下拉列表框--自定義選項(xiàng)界面樣AdapterView.OnItemSelectedListener實(shí)例作AdapterView.OnItemSelectedListener實(shí)例作為參數(shù)傳7、TimePicker/DatePicker時(shí)間選擇器研究8、ScrollView8、ScrollView滾動(dòng)視圖研究9、ImageView圖9、ImageView圖片視圖研究10、ImageButton10、ImageButton圖片按鈕研究11、GridView網(wǎng)格視圖研究11、GridView網(wǎng)格視圖研究4.2認(rèn)識(shí)Widget組所有Wiget組件都是繼承View而4.3Widget組件類繼承關(guān)源代碼下高源代碼下高級(jí)控件介12、ProgressBar進(jìn)度條創(chuàng)建進(jìn)度在布局xml文件中添加進(jìn)度條代碼在代碼中操作進(jìn)度條ProgressBar.setMax(100);//設(shè)置總長度為ProgressBar.setProgress(0);//設(shè)置已經(jīng)開啟長度為0,假設(shè)設(shè)置為50,進(jìn)度條將進(jìn)行到一研究13、ProgressDialog進(jìn)研究13、ProgressDialog進(jìn)度條對(duì)話框打開對(duì)話.setMessage("瀏覽publicvoidonClick(DialogInterfacedialoginterface,Uriuri=Uri.parse("/");Intentintent=newIntent(Intent.ACTION_VIEW,uri);}}int研究帶進(jìn)度研究帶進(jìn)度條的對(duì)話框研究進(jìn)度進(jìn)度對(duì)話框使用代碼ProgrssDialo.show(ProgrssDilogAc使用代碼ProgrssDialo.show(ProgrssDilogAcivity.this,"請(qǐng)稍等","數(shù)據(jù)正在加載中true);并顯示一個(gè)進(jìn)度對(duì)話框。調(diào)用setProgressStyle()方法設(shè)置進(jìn)度對(duì)話框風(fēng)格。有兩種風(fēng)格ProgressDialog.STYLE_SPINNER旋體進(jìn)度條風(fēng)格(為默認(rèn)風(fēng)格)ProgressDialog.STYLE_HORIZONTAL橫向進(jìn)度條風(fēng)格14、SeekBar拖動(dòng)條SeekBar.getProgress()獲取拖動(dòng)條當(dāng)前調(diào)用setOnSeekBarChangeListener()方法處理拖動(dòng)條值變化事件,SeekBar.OnSeekBarChangeListener實(shí)例作為參數(shù)傳研究15研究15、ImageSwitcher圖片切換研究16、Gallery研究16、Gallery圖片切換研究17、TabHost17、TabHost標(biāo)簽組件研究18、Menu菜18、Menu菜重寫Activity的onCreateOptiosMenu(Menumenu)方法,該方法用于創(chuàng)建選項(xiàng)菜單,在用戶按下手機(jī)的“Menu”按鈕時(shí)就會(huì)顯示創(chuàng)建好的菜單,在onCreateOptiosMenu(Menumenu)用Menu.add()方法實(shí)現(xiàn)菜單的添加。重寫Activity的onMenuItemSelected()方法,該方法用于處理菜單被選擇事源代碼下6.1Service概6.1.1源代碼下6.1Service概6.1.1Service概念及用(service)來保證當(dāng)用戶界面關(guān)閉時(shí)音樂繼續(xù)播放的6.2Service生命周用。多次調(diào)用startService()方法盡管不會(huì)多次創(chuàng)建服務(wù),但用。多次調(diào)用startService()方法盡管不會(huì)多次創(chuàng)建服務(wù),但onStart()方法會(huì)被多次調(diào)用。服務(wù)被終止時(shí)調(diào)用只有采用Cotext.indSevice()方法啟動(dòng)服務(wù)時(shí)才會(huì)回調(diào)該方法。該方法在調(diào)用者與服務(wù)綁定時(shí)被調(diào)用,當(dāng)調(diào)用者與服務(wù)已經(jīng)綁定,多次調(diào)用Cotext.indSevice()方法并不會(huì)導(dǎo)致該方法被多次調(diào)用。兩種方式混合使用時(shí),比如說你startService了,我bindService了,那么只有你stopService了而我也unbindservice了,這個(gè)Service才會(huì)被結(jié)束6.3啟動(dòng)與停止6.3.1Service開發(fā)步第一步:繼承ServicepublicclassMyServiceextendsService}第二步:在AndroidManifest.xml文件中的節(jié)點(diǎn)里對(duì)服務(wù)進(jìn)行配置服務(wù)不能自己運(yùn)行,使用strtServic()方法啟用服務(wù),調(diào)用者與服務(wù)之間沒有關(guān)連,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行。使用bindSevic()“不求同時(shí)生,必須同時(shí)死”的特點(diǎn)。如果打算采用Context.indService()方法啟動(dòng)服務(wù),在服務(wù)未被創(chuàng)建時(shí),系統(tǒng)會(huì)先調(diào)用服務(wù)的onCreat()方法,接著調(diào)用onBind()方法。這個(gè)時(shí)候調(diào)用者和服務(wù)綁定在一起,調(diào)用者退出了,系統(tǒng)就會(huì)先調(diào)用服務(wù)的onUnbind()方法,接著調(diào)用onDestry()方法。如果調(diào)用indService()定,多次調(diào)用bindSevic()方法并不會(huì)導(dǎo)致多次創(chuàng)建服務(wù)及綁定(也就是說onCreate()和onBind()方法并不會(huì)被多次調(diào)用)。如果調(diào)用者希望與正在綁定的服務(wù)解除綁定,可以調(diào)用unbindService()方法,用該方法也會(huì)導(dǎo)致系統(tǒng)調(diào)用服務(wù)的onUnbind()-->onDestroy()方法6.3.2用該方法也會(huì)導(dǎo)致系統(tǒng)調(diào)用服務(wù)的onUnbind()-->onDestroy()方法6.3.2采用startService()啟動(dòng)服采用Context.startService()方法啟動(dòng)服務(wù)的代碼如下publicclassHelloActivityextendsActivitypublicvoidonCreate(BundlesavedInstanceState)Buttonbutton=(Button)this.findViewById(R.id.button);View.OnClickListener(){publicvoidonClick(Viewv)Intentintent=newIntent(HelloActivity.this,SMSService.class);}}6.3.3采用bindService()啟動(dòng)服采用Context.startService()方法啟動(dòng)服務(wù)的代碼如下publicclassHelloActivityextendsActivityServiceConnectionconn=newServiceConnection()publicvoidonServiceConnected(ComponentNamename,IBinderservice)}publicvoidonServiceDisconnected(ComponentNamename)}publicvoidonCreate(BundlesavedInstanceState)Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){publicvoidonClick(ViewIntentintent=new{Intent(HelloActivity.this,SMSService.class);conn,Context.BIND_AUTO_CREATE);//unbindService(conn);//解除綁}}6.3.4Service服務(wù)演新建一個(gè)Service,命名為新建配置執(zhí)行上配置執(zhí)行上述工程,用Logcat查看日按HOME鍵進(jìn)入Settings(設(shè)置)àApplications(應(yīng)用)àRunningServices(正在運(yùn)行的服務(wù)<?xmlversion="1.0"encoding="utf-<LinearLayoutxmlns:android="/apk/res/android"android:text="@string/hello"/>android:text="startService"/>android:text="stopService"/>publicclassMyServiceextendsService//定義個(gè)一個(gè)Tag標(biāo)privatestaticfinalStringTAG=//一個(gè)Binder類,用在onBind()方法里,這樣Activity那邊可以獲取privateMyBindermBinder=newMyBinder();publicIBinderonBind(Intentintent){Log.e(TAG,"startIBinder~~~");returnmBinder;}publicvoidonCreate()Log.e(TAG,"startonCreate~~~");}publicvoidonStart(Intentintent,int{Log.e(TAG,"startonStart~~~");super.onStart(intent,startId);}publicvoidonDestroy()Log.e(TAG,"startonDestroy~~~");}publicbooleanonUnbind(Intentintent)Log.e(TAG,"startonUnbind~~~");returnsuper.onUnbind(intent);}publicvoidonDestroy()Log.e(TAG,"startonDestroy~~~");}publicbooleanonUnbind(Intentintent)Log.e(TAG,"startonUnbind~~~");returnsuper.onUnbind(intent);}publicgetSystemTime(){Timet=newTime();t.setToNow();return}publicclassMyBinderextendsBinder{MyServicegetService(){return}}{publicclassServiceDemoextends{MyServiceTextViewButtonstartServiceButton;ButtonstopServiceButton;ContextpublicvoidonCreate(BundlesavedInstanceState)}publicvoidmContext=mTextView=startServiceButton=stopServiceButton=}publicvoidonClick(Viewv)if(vstartServiceButton){publicvoidonClick(Viewv)if(vstartServiceButton){Intent=newi.setClass(ServiceDemo.this,MyService.class);}elseif(vstopServiceButton){Intent=newi.setClass(ServiceDemo.this,MyService.class);}<manifest<applicationandroid:icon="@drawable/icon"<activityandroid:name=".ServiceDemo"<intent-<actionandroid:name="ent.action.MAIN"<categoryandroid:name="ent.category.LAUNCHER"</intent-<serviceandroid:name=".MyService"<uses-sdkandroid:minSdkVersion="7"6.4Notification通如果需要查看消息,可以拖動(dòng)狀態(tài)欄到屏幕下方即可查看消息發(fā)送消息的代碼如下//獲取通知管理NotificationManagermNotificationManager=(NotificationManager)inticon=android.R.drawable.stat_notify_chat;longwhen=//新建一個(gè)通知,指定其圖標(biāo)和標(biāo)//第一個(gè)參數(shù)為圖標(biāo),第二個(gè)參數(shù)為標(biāo)題,第三個(gè)為通知時(shí)Notificationnotification=newNotification(icon,null,Intentopenintent=newIntent(this,//當(dāng)點(diǎn)擊消息時(shí)就會(huì)向系統(tǒng)發(fā)送openintent意PendingIntentcontentIntent=PendingIntent.getActivity(this,0,notification.setLatestEventInfo(this,“標(biāo)題我是內(nèi)容mNotificationManager.notify(0,6.4.1Android中PendingIntentcontentIntent=PendingIntent.getActivity(this,0,notification.setLatestEventInfo(this,“標(biāo)題我是內(nèi)容mNotificationManager.notify(0,6.4.1Android中的通知6.5案例分參考案源代碼下數(shù)據(jù)存儲(chǔ)方課程安排Shared內(nèi)容提供者(Content7.1.2如何保存軟件配置參數(shù)Window:采用ini文件j2se應(yīng)用采用properties屬性文使用SharedPreferences保存數(shù)據(jù),其背后是用xml文件存放數(shù)據(jù),文件存在/data/data//shared_prefs目錄7.1.3SharedPreferences存儲(chǔ)數(shù)SharedPreferencessharedPreferences=getSharedPreferences("lxt008",Editoreditor=sharedPreferences.edit();//獲取編輯器editor.putInt("age",35);mit();//提交修生成的lxt008.xml文件內(nèi)容如下<?xmlversion=“1.0”encoding=“utf-8”standalone=“yes”<string生成的lxt008.xml文件內(nèi)容如下<?xmlversion=“1.0”encoding=“utf-8”standalone=“yes”<string<intname="age"value=“30"getSharedPreferences(name,mode)方參數(shù)1:指定該文件名稱,名稱不用帶后綴參數(shù)2:會(huì)覆蓋原文件的內(nèi)容,如果想把新寫入的內(nèi)容追加到原文件中??梢允褂肅ontext.MODE_WORLD_READABLE除非在創(chuàng)建時(shí)指定了Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE,只有這樣其他程序才能正確訪問7.1.4訪問SharedPreferences數(shù)訪問SharedPreferences中的數(shù)據(jù)代碼如下SharedPreferencessharedPreferences=getSharedPreferences("lxt008",Stringname=sharedPreferences.getString("name","");intage= 不同應(yīng)用共享數(shù)7.2.1訪問其他應(yīng)用SharedPreferences數(shù)訪問其他應(yīng)用Preference,前提條件是:該preference創(chuàng)建時(shí)指定Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLEgetSharedPreferences(“l(fā)xt008",其他應(yīng)用要訪問上面應(yīng)用的preference,首先需要?jiǎng)?chuàng)建上面應(yīng)用的Context,然getSharedPreferences(“l(fā)xt008",其他應(yīng)用要訪問上面應(yīng)用的preference,首先需要?jiǎng)?chuàng)建上面應(yīng)用的Context,然后通過Context訪preference,訪問preference時(shí)會(huì)在應(yīng)用所在包下的shared_prefs目錄找到preferenceContextotherAppsContext=createPackageContext(“com.lxt008",SharedPreferencessharedPreferencesStringnameintage=sharedPreferences.getInt("age",SharedPreferences案參考結(jié)果驗(yàn)證切換到DDMS視選擇FileExplorer標(biāo)/data/data/你的項(xiàng)目目錄7.3Android文件操7.3.1文件可以存儲(chǔ)比使用引用更大數(shù)量的數(shù)Android提供方法來讀、寫文只有本地文件可以被訪優(yōu)點(diǎn):可以存儲(chǔ)大容量的數(shù)缺點(diǎn):文件更新或是格式改變可能會(huì)導(dǎo)致巨大的編程工7.3.2讀文件操Context.openFileInput(String打開一個(gè)與應(yīng)用程序聯(lián)系的私有文件輸入當(dāng)文件不存在時(shí)拋出FileInputStreamin=this.openFileInput("test.txt");//打開文件in.close();//關(guān)閉輸入7.3.3寫文件操Context.openFileOutput(Stringname,int文件輸出流可以在添加模式中打開,這意味新的數(shù)據(jù)將被添加到文件的末FileOutputStreamout=this.openFileOutput("test2.txt",MODE_APPEND);//打開文件"test2.txt"進(jìn)行寫out.close();//關(guān)閉輸7.3.4讀取靜態(tài)文要打開打包在程序中的靜態(tài)文件,使用該文件必須放在文件夾res/raw/InputStreamin=…//獲得Context資源文件操作案例參考7.3.5使用文件進(jìn)行數(shù)據(jù)存首先給大家介紹使用文件如何對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)出到文件中,具體的實(shí)現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的publicclassFileActivityextends@OverridepublicvoidonCreate(BundlesavedInstanceState)FileOutputStreamoutStream=this.openFileOutput(“l(fā)xt008.txt",Context.MODE_PRIVATE);}}openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在Android會(huì)自動(dòng)創(chuàng)建它。創(chuàng)建的文件保存在/data/data//files目錄,如/data/data/com.lxt008/files/lxt008.txt,通過點(diǎn)擊Eclipse菜單“Window”-“ShowView”-“Other”,在對(duì)話窗口中展開android文件夾,選擇下面的FileExplorer視圖,然后在FileExplorer視圖中展開/data/data//files目錄就可以看到該文件openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為Context.MODE_PRIVATE=Context.MODE_APPEND=Context.MODE_WORLD_READABLE=Context.MODE_WORLD_WRITEABLE=7.3.6讀取文件內(nèi)如果要打Context.MODE_WORLD_READABLE=Context.MODE_WORLD_WRITEABLE=7.3.6讀取文件內(nèi)如果要打開存放在/data/data//files目錄應(yīng)用私有的文件,可以使用Activity提供openFileInput()方法FileInputStreaminStreamreadInStream()的方法請(qǐng)看本頁下面?zhèn)渥⒒蛘咧苯邮褂梦募慕^對(duì)路徑Filefile=FileInputStreaminStream=newFileInputStream(file);注意:上面文件路徑中的“com.lxt008”為應(yīng)用所在包,應(yīng)替換為你自己應(yīng)用使用的包Activity還提供了getCacheDir()和getFilesDir()方法getCacheDir()方法用于獲取/data/data//cache目getFilesDir()方法用于獲取/data/data//files目7.4SDCard文件存7.4.1把文件存放在使用Activity的openFileOutput()方法保存文件,文件是存放在手機(jī)空間上,一般手機(jī)的存儲(chǔ)空間不是很們可以把它存放在SDCard。SDCard是干什么的?你可以把它看作是移動(dòng)硬盤或U盤。在Dos窗口中進(jìn)入androidSDK安裝路徑的tools目錄,輸入以下命令創(chuàng)建一張容量為2G的SDCard,件后綴可以隨便取,建議使用mksdcard2048M在程序中訪問SDCard,你需要申請(qǐng)?jiān)L問SDCard的權(quán)限在AndroidManifest.xml中加入訪問SDCard的權(quán)限如下在SDCard中創(chuàng)建與刪除文件權(quán)限<uses-permission往SDCard寫入數(shù)據(jù)權(quán)限<uses-permission要往SDCard存放文件,程序必須先判斷手機(jī)是否裝有SDCard,并要往SDCard存放文件,程序必須先判斷手機(jī)是否裝有SDCard,并且可以進(jìn)行讀寫注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權(quán)FilesdCardDirEnvironment.getExternalStorageDirectory();//獲取SDCard目錄FilesaveFile=newFile(sdCardDir,“l(fā)xt008.txt”);FileOutputStreamoutStream=newFileOutputStream(saveFile);}錄,你也可以這樣寫FilesdCardDirnewFile("/sdcard");獲取SDCard目錄FilesaveFile=newFile(sdCardDir,“l(fā)xt008.txt");//上面兩句代碼可以合成一句FilesaveFile=newFile("/sdcard/lxt008.txt");FileOutputStreamoutStream=newFileOutputStream(saveFile);源代碼下8.1SQLite8.1.1數(shù)據(jù)庫存需要事務(wù)處8.1.2SQLite介參閱獲取更多信 創(chuàng)建/打開/刪除數(shù)據(jù)8.2.1創(chuàng)建數(shù)據(jù) 創(chuàng)建/打開/刪除數(shù)據(jù)8.2.1創(chuàng)建數(shù)據(jù)Stringname,//intversion

溫馨提示

  • 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)論