Google I/O 2019 Android 應用源代碼現已發佈

做者: Takeshi Hagikura, 開發者計劃工程師android

今年的 I/O 應用大幅修改了現有功能並添加了若干新特性。在這篇文章中,咱們將着重圍繞其中幾項主要變動進行說明。ios

盡享 Android Q 新功能

手勢導航git

Android Q 引入了徹底手勢導航選項,容許用戶經過手勢動做返回上一級界面和主屏。爲了支持手勢導航支持,應用開發者須要作到如下兩點:github

  1. 將應用內容擴展到屏幕邊緣
  2. 處理存在衝突的應用手勢

Google I/O 2019 應用是首批徹底支持手勢導航的應用之一。更多內容,請閱讀《手勢導航: 實現邊到邊的全屏體驗》系列連載,或請前往 Github 查看團隊在 Google I/O 應用庫中提交的相關代碼,瞭解如何將應用內容擴展到屏幕邊緣。bash

手勢導航: 返回上一級界面和主屏

深色主題背景服務器

Android Q 引入的另外一項新特性是系統深色主題背景,它既可全局應用於 Android 系統界面,也可應用於設備上運行的應用。對於開發者而言,深色主題背景具有諸多優點,其中包括: 下降電耗;改善弱視以及對強光敏感的用戶的可視性等。app

如需支持夜間主題背景,您應用的主題應繼承下面其中一個夜間主題:編輯器

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
OR
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
複製代碼

請避免使用硬編碼顏色或圖標,而是選用主題屬性 (例如: ?android:attr/textColorPrimary) 或適合在夜間使用的資源 (例如: 在 res/values/colors.xml 和 res/values-night/colors.xml 中定義的顏色)。更多內容,請收看 Google I/O 大會上關於深色主題背景與手勢導航的專題分享, 或查看 Github 上 Google I/O 應用庫中團隊所提交的三份代碼 (初步實現風格修復以及更多更新),瞭解深色主題背景在真實應用中的具體實現方式。ide

日程界面優化

在 2018 年,大會日程的 UI 設計採用了標籤界面,一個標籤表明一個會議日,用戶可經過豎屏滑動來查看不一樣的日程安排。今年的 I/O 應用更改了原先的 UI 設計,從而解決了若干可用性及性能問題。以 UI 流暢性爲例,應用在日程表 UI 出現後就同時渲染全部標籤內的 view,形成嚴重的 UI 卡頓問題,且延遲現象在低端設備上尤其明顯。性能

新的日程 UI 採用單流開發,容許應用僅渲染可視內容,用戶只需觸擊 UI 頂部的日期選項即可跳轉至相應頁面,並查看當天的議程安排。若是您想了解咱們對日程表 UI 做出了哪些更改,請前往 Github 查看相關代碼 (將日程顯示爲單個列表顯示日期標識)。

導航組件

咱們利用導航組件把今年的 I/O 應用簡化爲一個單 Activity 應用,這種方法具有下述優勢:

  • 開發者能夠在導航編輯器中一眼看到全部界面過渡,大幅簡化了不一樣界面的啓動活動。
  • 移除了向上/返回導航操做的樣板代碼
  • 使用 Safe Args Gradle 插件在各個 Fragment 之間傳遞靜態類型的參數

請閱讀《導航組件入門指南》,學習如何在應用中添加導航組件,或查看 Google I/O 2019 應用庫中的相關代碼 (添加 Gradle 依賴項和插件, 遷移 MainActivity, 更新會話詳情和次級導航結構, 禁用導航抽屜),瞭解導航組件在真實應用中的具體用法。

在導航編輯器內查看全部過渡動畫

使用 Room 實現全文搜索

咱們爲今年的大會應用添加了一個搜索功能,方便用戶快速查找有關演講、講師和 codelab 的信息。在實現過程當中,咱們使用了 Room Jectpack 組件中的全文搜索特性。一旦從服務器獲取最新的大會數據,咱們就會對 Room 表格內的有關數據進行更新,每一個 Room 表格都有對應的 FTS 映射表格。當用戶在搜索框中輸入要查找的內容後,檢索項便會被用於查詢演講名稱等數據。查詢結果將當即顯示在屏幕上,所以,若是搜索字段發生任何字符更改,服務器會立刻返回更新後的結果。接着,用戶即可以點擊某個詞條,導航至對應頁面並獲取詳細內容。若是您對全文搜索有興趣,歡迎查看咱們的代碼 (使用 Room 添加搜索功能在搜索結果中包含分享人信息在搜索結果中包含 codelab 信息添加 Room 遷移路徑)。

查找某個討論會或分享人

更多優化

除了以上關鍵變動之外,咱們還對許多細節部分進行了優化與改進。好比說,咱們添加了新的主屏 UI 和 Codelab UI,前者容許應用在大會期間向用戶顯示與時間相關的信息,後者則提供了更多 I/O 大會上與 codelab 有關的內容以及詳細的參與方法。

Codelabs UI

主屏 UI
此外,咱們還利用 Firebase Remote Config (遠程配置) 來切換各個特性的顯示。這樣作的好處在於,咱們無需更新整個應用,也沒必要移除用於表示議程 UI 中各個活動起始或結束時間的硬編碼值,而是直接在 Remote Config 中更新 Boolean 值便可。

探索源代碼

感興趣的小夥伴不妨立刻前往 Github 網站,盡情探索 2019 I/O 大會應用的源代碼。歡迎你們留言,與咱們分享您的想法與感覺。若是您有任何疑問或問題,請經過 Github 的錯誤追蹤頁面提交報告。

點擊前往 "Android Developers 官方文檔" 查看更多信息

相關文章
相關標籤/搜索