Android Sunflower 帶您玩轉 Jetpack
作者:宋立心 (Tiem Song), Android 軟體工程師
△
插圖作者:Virginia Poltrack
在
Google I/O 2018 開發者大會
上,我們推出了
Android Jetpack
,其中包含的 Android 開發架構組件能夠幫助您簡化開發流程,從而輕鬆打造出優質應用。開發者能夠利用 Jetpack 組件學習最佳實踐,減少樣板代碼,簡化複雜任務,進而將精力集中在關鍵代碼上。為了幫助開發者把 Jetpack 組件集成到自己的應用中,我們開發出一款名為
Sunflower (太陽花)
的圓藝應用,讓您能夠在模擬養花的過程中學習最佳 Android 開發實踐,了解別的開發者是如何利用 Android Jetpack 優化開發流程的。如果您是第一次接觸 Jetpack,您可以先訪問官方網站了解Jetpack 基本知識
,在動手開發出第一個基於 Jetpack 的簡單應用
之後,再進行下一步。本文是 Sunflower 系列文章的第一篇,希望大家在閱讀本文後能夠對應用有個初步的了解,並且對應用中涉及的 Jetpack 組件有一定認識。該系列的其它文章會陸續與各位開發者見面,如果您對 Jetpack 和 Android 開發感興趣,或者想要進一步探索 Jetpack 導航組件,了解如何利用 WorkManager 調度循環任務,請持續關注 Sunflower 系列文章。
>>
Android Jetpack
https://developer.android.google.cn/jetpack/
>>
Sunflower (太陽花)
https://github.com/googlesamples/android-sunflower
>>
Jetpack 基本知識
https://developer.android.google.cn/jetpack/
>>
開發出第一個基於 Jetpack 的簡單應用
https://developer.android.google.cn/jetpack/docs/getting-started
遊園指南
應用首次開啟時會在屏幕上顯示 「我的花園」 界面;當然此時的花園內尚未種植任何植物。
△
未種植任何植物的 「我的花園」
接下來,我們就動手種株植物吧!在您輕觸左上角抽屜菜單鍵,打開側邊欄後,界面內會顯示植物列表。
△
植
物目錄
每種植物都有對應的生長區。而生長區是按照地理緯度劃分的,它代表最適合該植物生長的地區。如果想要對植物列表進行篩選,您只需要在菜單欄中直接選定某一生長區即可。
選定植物後,界面便會轉入 「植物詳情」 頁面。
△
植物介紹
在植物詳情詳情頁面中,您可以看到該植物的名稱、描述、澆水方法以及照片。您可以點擊界面內的
懸浮操作按鈕
,將植物添加到自己的花園;也可以在菜單欄點擊「分享」
選項,將植物信息分享給好友。在添加一株或多株植物後,您就可以在 「我的花園」 界面中看到已種植成功的植物,同時植物圖片的下方還會還顯示該植物的種植日期以及下次澆水時間。接下來,讓我們跳轉回 「我的花園」 看看都種了哪些植物吧。
>>
懸浮操作按鈕
https://developer.android.google.cn/guide/topics/ui/floating-action-button
>>
「
分
享」
http://developer.android.google.cn/training/sharing/
△
種植後的 「我的花園」
此時,「我的花園」 界面內,我們已經可以看到成功添加的植物、它們的種植日期以及上次澆水的時間。
使用 Jetpack 組件
Sunflower 使用了 Jetpack 中的許多組件,以下為各個組件在應用中所扮演的角色:
Sunflower 完全採用
Kotlin
語言,並且使用了Android KTX
完成全部代碼的編寫。Android KTX 是一組 Kotlin 擴展庫,它為 Kotlin 優化了 Jetpack 和 Android 平台 API,從而讓 Kotlin 的源代碼更加簡潔和自然。本應用採用 「單 Activity 多
Fragment
」 的開發模式,並且利用導航組件 (
Navigation component
) 以及過渡動畫 (
transition animation actions
) 實現 fragment 之間的切換。
應用通過
ConstraintLayout
和
Data Binding
在界面上創建基於 fragment 的布局。
Room
提供資料庫級別的本地數據管理服務,負責將植物列表信息和 「我的花園」 條目儲存在設備上;而ViewModels
則是通過LiveData
將上述本地信息呈現至 UI 界面。AppCompat
保證了應用的核心功能可以在舊版本的 Android 系統上順利運行。
WorkManager
負責管理後台任務。
用戶可以分享植物詳情至設備上的其它應用,也可以將其複製到 「剪貼板」 里。
應用檢測 (方面) 使用了本地 JUnit 單元測試和
Espresso
Android UI 測試。
>>
Kotlin
https://developer.android.google.cn/kotlin
>>
Android KTX
https://developer.android.google.cn/kotlin/ktx
>>
Fragment
https:
//developer.android.google.cn/guide/components/fragments
>>
Navigation component
https://developer.android.google.cn/topic/libraries/architecture/navigation/
>>
transition animation actions
https://developer.android.google.cn/topic/libraries/architecture/navigation/navigation-implementing#Create-transition
>>
ConstraintLayout
https://developer.android.google.cn/training/constraint-layout/
>>
Data Binding
https://developer.android.google.cn/topic/libraries/data-binding/
>>
Room
https://developer.android.google.cn/topic/libraries/architecture/room
>>
ViewModels
https://developer.android.google.cn/topic/libraries/architecture/viewmodel
>>
LiveData
https://developer.android.google.cn/topic/libraries/architecture/livedata
>>
AppCompat
https://developer.android.google.cn/topic/libraries/support-library/packages#v7-appcompat
>>
WorkManager
https://developer.android.google.cn/topic/libraries/architecture/workmanager
>>
Espresso
https://developer.android.google.cn/training/testing/espresso/
下一步改進
Sunflower 目前尚處於密集開發階段,我們僅在 Alpha 渠道發布了該應用,並且計劃在應用內定期添加新功能和深度組件集成。近期發布的改進項包括:(1) 允許用戶根據自己的地理位置篩選植物;(2) 升級至
AndroidX
;(3) 支持通知推送,提醒用戶給植物澆水。如果您希望在應用中增加新功能,或者有想和大家一同探討的話題,請在 GitHub 上創建新話題或給已有話題投票。
在今後的文章中,我們會進一步探討 Sunflower 中的其它 Jetpack 組件,如導航和重複任務,盡情期待。謝謝您對 Sunflower 的關注!
>>
AndroidX
https://developer.android.google.cn/topic/libraries/support-library/androidx-overview
△
Google 花園中的向日葵
進一步探索
前往
https://github.com/googlesamples/android-sunflower
,查看或下載 Sunflower 代碼。獲取更多
Jetpack
相關信息,了解如何構建您的第一個 Jetpack 應用
。>>
Jetpack
https://developer.android.google.cn/jetpack/
>>
構建您的第一個 Jetpack 應用
https://developer.android.google.cn/jetpack/docs/getting-started
點擊屏末
|
閱
讀
原
文
|
"
我們願意
更好地傾聽您的聲音 "
推薦閱讀
·
Android Jetpack: ViewModel | 中文教學視頻·
Android 9 的非 SDK 介面限制 | 中文教學視頻·
幫您系統地認識全球化設計 (上篇) | 認知度推薦閱讀:
※Android O最給力改進:App啟動速度快兩倍!
※關於Hitorino的iOS/Android客戶端
※源碼解析之ListView
※Unity 關於安卓和各平台讀寫本地json文件,WWW讀取本地文件,Unity各路徑API目前較完整的詳解
TAG:Android |