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