Android Sunflower 帶您玩轉 Jetpack

Google_Developers發表於2018-08-28

作者:宋立心 (Tiem Song), Android 軟體工程師

本文為谷歌開發者原創文章,未經允許,謝絕轉載 原文連結:mp.weixin.qq.com/s/k-zQVB5Eh…

Android Sunflower 帶您玩轉 Jetpack
△ 插圖作者: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 developer.android.google.cn/jetpack/

Sunflower (太陽花) github.com/googlesampl…

Jetpack 基本知識 developer.android.google.cn/jetpack/

開發出第一個基於 Jetpack 的簡單應用 developer.android.google.cn/jetpack/doc…

遊園指南

應用首次開啟時會在螢幕上顯示 “我的花園” 介面;當然此時的花園內尚未種植任何植物。

Android Sunflower 帶您玩轉 Jetpack
△ 未種植任何植物的 “我的花園”

接下來,我們就動手種株植物吧!在您輕觸左上角抽屜選單鍵,開啟側邊欄後,介面內會顯示植物列表。

Android Sunflower 帶您玩轉 Jetpack
△ 植物目錄

每種植物都有對應的生長區。而生長區是按照地理緯度劃分的,它代表最適合該植物生長的地區。如果想要對植物列表進行篩選,您只需要在選單欄中直接選定某一生長區即可。

選定植物後,介面便會轉入 “植物詳情” 頁面。

Android Sunflower 帶您玩轉 Jetpack
△ 植物介紹

在植物詳情詳情頁面中,您可以看到該植物的名稱、描述、澆水方法以及照片。您可以點選介面內的懸浮操作按鈕,將植物新增到自己的花園;也可以在選單欄點選 “分享” 選項,將植物資訊分享給好友。

在新增一株或多株植物後,您就可以在 “我的花園” 介面中看到已種植成功的植物,同時植物圖片的下方還會還顯示該植物的種植日期以及下次澆水時間。接下來,讓我們跳轉回 “我的花園” 看看都種了哪些植物吧。

懸浮操作按鈕 developer.android.google.cn/guide/topic…

“分享” developer.android.google.cn/training/sh…

Android Sunflower 帶您玩轉 Jetpack
△ 種植後的 “我的花園”

此時,“我的花園” 介面內,我們已經可以看到成功新增的植物、它們的種植日期以及上次澆水的時間。

使用 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 developer.android.google.cn/kotlin

Android KTX developer.android.google.cn/kotlin/ktx

Fragment developer.android.google.cn/guide/compo…

Navigation component developer.android.google.cn/topic/libra…

transition animation actions developer.android.google.cn/topic/libra…

ConstraintLayout developer.android.google.cn/training/co…

Data Binding developer.android.google.cn/topic/libra…

Room developer.android.google.cn/topic/libra…

ViewModels developer.android.google.cn/topic/libra…

LiveData developer.android.google.cn/topic/libra…

AppCompat developer.android.google.cn/topic/libra…

WorkManager developer.android.google.cn/topic/libra…

Espresso developer.android.google.cn/training/te…

下一步改進

Sunflower 目前尚處於密集開發階段,我們僅在 Alpha 渠道釋出了該應用,並且計劃在應用內定期新增新功能和深度元件整合。近期釋出的改進項包括:(1) 允許使用者根據自己的地理位置篩選植物;(2) 升級至 AndroidX;(3) 支援通知推送,提醒使用者給植物澆水。

如果您希望在應用中增加新功能,或者有想和大家一同探討的話題,請在 GitHub 上建立新話題或給已有話題投票。

在今後的文章中,我們會進一步探討 Sunflower 中的其它 Jetpack 元件,如導航和重複任務,盡情期待。謝謝您對 Sunflower 的關注!

AndroidX developer.android.google.cn/topic/libra…

Android Sunflower 帶您玩轉 Jetpack
△ Google 花園中的向日葵

進一步探索

前往 github.com/googlesampl… Sunflower 程式碼。

獲取更多 Jetpack 相關資訊,瞭解如何構建您的第一個 Jetpack 應用。

Jetpack developer.android.google.cn/jetpack/

構建您的第一個 Jetpack 應用 developer.android.google.cn/jetpack/doc…

歡迎關注 Google 官方微信公眾號『谷歌開發者』!

相關文章