通過之前的文章,我們了解了各類開發(fā)工具、探索了應(yīng)用程序項目中所包含的基本要素、學 習用戶界面設(shè)計、交互性、資源以及數(shù)據(jù)的使用機制,另外我們也全面追蹤了應(yīng)用程序運行的整個過程。到目前為止,我們已經(jīng)介紹過的知識足以幫助大家從非常理想的起點開始進行Android應(yīng)用程序開發(fā),但Android所提供的發(fā)揮空間還遠不止這些、因此開發(fā)中的可能性也幾乎沒有窮盡。因此,我們需要為自己 的下一步學習選擇明確的方向。在今天的文章中,我們將把全部注意力集中在可資選擇的未來學習對象上。在本系列教程的下一篇文章——也就是最后一篇文章里, 我們將通過一項測驗回顧曾經(jīng)了解過的各項知識。
通過閱讀本系列教程,大家應(yīng)該已經(jīng)在創(chuàng)建Android應(yīng)用時擁有多種可以選擇的潛在發(fā)展方向。當然,如果大家已經(jīng)規(guī)劃好了具體的開發(fā)項目,那么由 此帶來的實際需求已經(jīng)足以指導各位明確未來的學習路線。不過Android平臺所提供的元素極為豐富,而且其中很多應(yīng)用元素都普遍適用于我們將要接觸的大 多數(shù)應(yīng)用。在今天的文章中,我們將近距離觀察一部分實用性最高的主題,并以此為起點建立體系完整的Android開發(fā)技能。
第一步
大家可以利用我們之前創(chuàng)建好的示例應(yīng)用項目嘗試下面將要介紹的各種Android開發(fā)技巧。請注意,我們原先是把數(shù)據(jù)保存在shared preferences當中,因此大家可以選擇將數(shù)據(jù)保存在文件內(nèi)。我們要做的是嘗試讓用戶利用EditText視圖以及功能按鈕實現(xiàn)數(shù)據(jù)的提交與保存。 將用戶數(shù)據(jù)寫入到一個文件當中,讓應(yīng)用程序在啟動時讀取其內(nèi)容并把結(jié)果顯示在TextView視圖當中。通過這種方式,大家可以實現(xiàn)持久性數(shù)據(jù)的保存,從 而在應(yīng)用程序下一次運行時加以使用。
第二步
另一項重要技能在于從遠程資源,例如Web服務(wù),當中獲取數(shù)據(jù)。為了實現(xiàn)這一目標,我們需要在Activity類當中添加一個內(nèi)部 AsyncTask類,并借此進行遠程數(shù)據(jù)獲取。在獲取到數(shù)據(jù)之后,還需將其顯示在應(yīng)用程序當中。此外,如果應(yīng)用程序獲取到的是XML、JSON或者其它 一些常見數(shù)據(jù)格式,大家可能還希望對其加以解析或者進行格式調(diào)整。參閱谷歌官方提供的“連接到網(wǎng)絡(luò)”部分的說明,其中提供的示例代碼足以作為理想的起步素材。
第三步
另一種主要數(shù)據(jù)存儲選項同樣適用于很多應(yīng)用程序的實際需求,這就是使用SQLite數(shù)據(jù)庫。大家可以通過創(chuàng)建一個SQLiteOpenHelper 類來嘗試這種方式,在這里我們需要定義該斬架構(gòu),例如表和列。在應(yīng)用程序的其它部分,我們可以要求SQLiteOpenHelper類將數(shù)據(jù)寫入到數(shù)據(jù)庫 中并利用游標實現(xiàn)內(nèi)容讀取,從而將結(jié)果顯示在應(yīng)用程序的用戶界面當中。再次提醒大家,我們可能需要將用戶輸入的數(shù)據(jù)保存在數(shù)據(jù)庫當中,并在應(yīng)用程序下一次 啟動時顯示結(jié)果。除了向數(shù)據(jù)庫中插入記錄并對其進行查詢之外,大家還可以嘗試更新并刪除記錄。作為初次上手的起點,我們不妨先從閱讀谷歌官方提供的“在SQLite數(shù)據(jù)庫中保存數(shù)據(jù)”說明開始。
第一步
在已經(jīng)創(chuàng)建完成的應(yīng)用程序當中,我們只在用戶界面當中使用了一個操作屏幕。接下來,大家可以通過在應(yīng)用中創(chuàng)建第二個activity類來增加屏幕數(shù) 量,即順序打開File、New、Class菜單選項。今天的任務(wù)是在第一個屏幕——也就是主activity當中添加一個按鈕,并在用戶點觸該按鈕時啟 動第二個activity。舉例來說,如果我們開發(fā)的是一款游戲應(yīng)用,那么該按鈕所顯示的文本內(nèi)容可以是“游戲說明”,而第二個activity的名稱則 可以被設(shè)為How.java。為第二個activity創(chuàng)建一個布局文件,其中包含一個將文本內(nèi)容保存在res/values字符串XML文件中的 TextView。如果我們使用的示例應(yīng)用如上所述是一款游戲的話,那么第二個activity中應(yīng)該包含關(guān)于游戲操作與進行方式的信息。應(yīng)用程序中的大 部分信息顯示都可以遵循這種簡單的處理方式。
在第一個activity的onClick處理程序中,大家可以利用intents啟動“游戲說明”activity。一旦我們在應(yīng)用程序中包含了 第二個activity,則需要利用putExtra方法向其提交來自第一個activity的數(shù)據(jù)。大家也可以嘗試反過來讓第二個activity執(zhí)行 某些任務(wù),并把獲得的結(jié)果提供給第一個activity。后者需要通過onActivityResult方法來接收結(jié)果數(shù)據(jù)。請大家點擊此處查看谷歌官方提供的“Activity類引用”說明以了解更多與此相關(guān)的知識。
第二步
作為下一個步驟,大家可以嘗試在自己的activity當中包含多個不同用戶界面視圖。大家還會注意到,不同類型的視圖需要通過不同的方式加以實 現(xiàn)。在大家熟練掌握了不同視圖類型的使用方法之后,接下來可以嘗試使用fragment——這樣我們就能夠在應(yīng)用程序的不同部分中重復(fù)使用用戶界面的各個 組成元素了。
另一種實用性極高的用戶界面組件要數(shù)list視圖。在list視圖中,屏幕會顯示一份包含多種條目的列表。系統(tǒng)會利用adapter將來自數(shù)據(jù)源的 信息填充到list視圖當中,也就是實現(xiàn)由數(shù)據(jù)到視圖的映射。大家可以利用ListActivity來取代標準的Activity類。在list activity當中,大家可以對方法集進行重寫以響應(yīng)用戶與列表內(nèi)條目的交互操作。作為學習list視圖的開端,大家可以首先認真閱讀谷歌官方提供的list視圖功能示例。
一般來說,應(yīng)用程序在外觀與使用體驗上最好能夠與Android系統(tǒng)本身保持一致。只要可能,大家應(yīng)該盡量利用標準化Android用戶界面元素而非創(chuàng)建自己的定制組件。從這一理由出發(fā),大家可能希望了解更多關(guān)于Action Bar的知識,并始終提醒自己在設(shè)計用戶界面以及應(yīng)用程序的導航模式時遵循上述結(jié)論。
大家可以在自己創(chuàng)建的Android應(yīng)用程序當中使用多種媒體類型,例如音頻與視頻、動畫以及通過設(shè)備攝像頭所捕捉到的圖片乃至視頻等。 Android系統(tǒng)提供一系列標準方法,大家可以借此訪問設(shè)備資源(例如攝像頭)并實現(xiàn)特定使用需求(例如進行視頻記錄)。請大家查看《Android開 發(fā)者指南》中的“多媒體指南”一節(jié)以獲取更多信息。
正如我們在本系列教程中所提到,大家可以在Android應(yīng)用程序當中利用XML創(chuàng)建視覺元素、從而獲得屬于自己的可繪制組件。大家也可以利用 XML來定義動畫,并通過代碼控制動畫的播放效果。在Android平臺上,我們可以利用動畫為用戶界面添加各種動態(tài)效果——系統(tǒng)支持的效果數(shù)量繁多,其 中包括淡入淡出、旋轉(zhuǎn)、翻轉(zhuǎn)以及其它各種過渡類型。大家點擊此處參閱谷歌官方提供的“添加動畫”說明。
第一步
在Android平臺上進行應(yīng)用程序開發(fā)的優(yōu)勢之一在于,我們可以充滿利用平臺所提供的現(xiàn)有資源,其中包括其它應(yīng)用程序。正如我在本系列教程的前幾 篇文章中所提到,大家可以在不同應(yīng)用程序之間實現(xiàn)數(shù)據(jù)共享并在自己的應(yīng)用中使用這些共享數(shù)據(jù)。大家還可以允許用戶利用電子郵件、即時消息以及社交網(wǎng)絡(luò)等方 式在我們的應(yīng)用當中共享內(nèi)容。最簡單也最可靠的數(shù)據(jù)共享途徑就是利用send意圖。當我們的應(yīng)用程序啟動一條send活動時,操作系統(tǒng)會為用戶提供一份應(yīng) 用程序列表、其中羅列了用戶可以將內(nèi)容發(fā)送至哪些目標處。請大家在著手嘗試之前認真閱讀谷歌官方提供的“向其它應(yīng)用發(fā)送簡單數(shù)據(jù)”說明,其中還包含幾個示例。
第二步
除了使用send之外,我們還可以利用其它多種方式實現(xiàn)從應(yīng)用程序內(nèi)部啟用Android資源,因此請大家在自己的項目多多進行嘗試。舉例來說,大 家可以利用dial來撥出電話號碼、利用view在瀏覽器中查看見面或者使用地圖應(yīng)用中的位置信息。大家還可以從設(shè)備的內(nèi)置傳感器處獲取數(shù)據(jù),從而使自己 的應(yīng)用程序能夠捕捉并處理與位置及周邊環(huán)境相關(guān)的數(shù)據(jù)。在多數(shù)情況下,我們可以通過在action啟動結(jié)束時在應(yīng)用程序與Android環(huán)境之間建立起對 話,并向應(yīng)用程序返回信息時觸發(fā)其它action。利用這種方式,我們的應(yīng)用程序就可以充分利用Android設(shè)備所提供的移動特性。
第一步
我們已經(jīng)討論了未來學習的幾大主要潛在方向,但事實上大家所接觸的仍然只是Android平臺頗為表面化的淺層次知識。這套平臺仍然在不斷變化,而 可行性名單也會變得越來越長。針對常見任務(wù)的推薦性技術(shù)也會定期變更,因此如果大家希望能一直開發(fā)出高品質(zhì)的Android應(yīng)用程序,請記住不斷學習才是 最重要的職業(yè)習慣。
下面我再為大家推薦一些實用性很高的學習資源:
訪問Android開發(fā)者博客來獲取關(guān)于這套平臺的最新及未來發(fā)展趨勢。該博客還經(jīng)常提供一些功能性代碼示例,可以作為很好的學習素材。
Vogella Android指南是網(wǎng)絡(luò)上現(xiàn)有的最具Android學習資源之一。Vogella網(wǎng)站通常會提供一些完整的技術(shù)示例項目,旨在對官方開發(fā)者指南當中所涉及的專業(yè)知識進行詳細講解。
Google+上的Android開發(fā)者交流平臺經(jīng)常發(fā)布大量公告與Android開發(fā)討論話題,同樣值得大家多加關(guān)注。
正如其它開發(fā)平臺一樣,大家會在學習Android的過程中發(fā)現(xiàn)更多無法確定的問題,其中大部分都需要通過網(wǎng)絡(luò)搜索加以解決。正如大家所了解,很多常見問題都能在Stack Overflow上找到答案——如果各位還不是該網(wǎng)站的??停堮R上去逛逛吧。
在本系列教程當中,我的目標是幫助大家學習關(guān)于Android開發(fā)的基礎(chǔ)知識。如果各位過去曾經(jīng)學習過編程或者開發(fā)技能,肯定清楚本系列教程還遠遠 不是探索的終點。如果大家有意繼續(xù)為Android平臺開發(fā)應(yīng)用,則需要熟練運用本教程所介紹的知識并將其作為Android工具箱中的財富好好加以保 管。作為本系列教程的結(jié)尾,我將在下一篇文章中提供一項測試、看看大家有沒有真正掌握之前提到的內(nèi)容——請做好準備吧!
更多建議: