Jetpack Compose 1.0 釋出已經快一年了,在此期間我們看到社群是它的熱情,例如欣賞 Kotlin 文法的簡潔性、使 UI 開發變得更加便捷和更輕松的聲明式方法。
社群中的 Compose
我們已經看到許多公司開始大規模使用 Compose,例如 Compose 于 Play Store 團隊密切合作,他們在很早的時候就開始嘗試 Compose ,并了解到它不僅更有趣,而且對他們的開發人員生産力的提高也很有幫助。
Play Store 告訴我們 “所有新的 Play 商店功能都建立在這個架構之上,Compose 有助于為應用程式解鎖更快的速度和更順暢的釋出。 ”
Twitter 的團隊一直在應用程式的不同部分使用 Jetpack Compose,因為:
“Compose 讓我們更容易定義我們自己的元件,并使他們的 API 合約更加明确、靈活和直覺。”
Airbnb 團隊也采用了 Compose:
“ Jetpack Compose 是我們技術戰略的關鍵部分。生産力的提升是巨大的。”
我們很高興看到在這些大型又複雜的生産環境中使用 Compose, Compose 不進讓他們在 UI 開發中體驗到了更多的樂趣,而且提高了相關工程的優勢!
以上這些隻是幾個示例,因為 Play 商店中排名前 1000 的應用程式中有 100 多個正在使用 Compose。
這些密切合作以及始終聽取 Android 社群的回報是我們開發過程的核心,也是推進我們未來路線圖的關鍵。
我們現在專注于支援更進階的用例,包括:
- 新的 API 和功能改進;
- 新工具;
- 更容易使用 Compose 進行建構;
我們知道 Compose 從根本上改變了 UI 的建構方式,為了幫助開發進行必要的思維轉變,我們将釋出更多關于進階主題的指導、演講和代碼實驗室,以及更深入的視訊,以便幫助開發者編寫更出色的應用。
Compose 1.2 測試版
今天,我們釋出了Compose 1.2 的第一個 beta 版本,其中包含許多功能和改進。
文本改進
字型填充
我們通過可自定義的參數
includeFontPadding
解決了問題跟蹤器中投票最多的錯誤之一,這裡建議開發者将此值設定為
false
,因為這将使布局中的文本可以更精确地對齊。
我們的計劃在未來版本中将其設定為的預設值,如果将值設定為
false
導緻應用出現問題,請在上述 issue 中告知我們。此外當
includeFontPadding
設定為
false
時 ,可以通過設定
lineHeightStyle
參數來調整可組合文本的行高,結合起來可以是這樣的:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = false
),
lineHeightStyle = LineHeightStyle(
alignment = Alignment.Center,
trim = Trim.None
)
)
)
可下載下傳字型
Compose 1.2 還在 Compose 中引入了可下載下傳的字型,開發者可以使用 Compose 的新 API 來異步通路 Google 字型,甚至可以定義備用字型,而無需任何複雜的設定。
使用可下載下傳字型,開發者可以保持較小的 APK 大小并改善運作狀況,因為多個應用程式可以通過 provider 共享相同的字型。
文字放大鏡
Android 文本提供了一個放大鏡控件,可以更輕松地選擇文本,Compose 現在也支援文本放大鏡。
拖動選擇時會顯示放大鏡,以幫助檢視手指下的内容,Compose 1.1.0 将放大鏡用于文本字段中的選擇,現在 Compose 1.2.0 支援文本字段中的放大鏡和
SelectionContainer
, 放大鏡也得到了增強以比對 Views 中 Android 放大鏡的精确行為。
布局功能和改進
懶布局
随着懶布局的釋出, API
LazyVerticalGrid
和
LazyHorizontalGrid
已經從實驗性階段的畢業,一個新的實驗性 API 被添加,稱為
LazyLayout
,它允許開發者實作自己的自定義惰性布局。
在 I/O 演講中了解有關這些 API 的更多資訊:Compose 中的懶布局。
與 CoordinatorLayout 互動
當在視圖系統中嵌入可組合滾動的
CoordinatorLayout
時,開發者現在可以確定它們的滾動行為是可互操作,這讓可折疊工具欄的設定更加容易。
現在開發者可以通過
rememberNestedScrollInteropConnection
将調用新實驗方法的結果傳遞給
nestedScroll
修飾符來選擇加入此行為,
這是一個示範此新功能的示例。
視窗插圖
Accompanist 裡 insets 庫現在已使用該類更新到 Compose Foundation 庫,使用
WindowInsets
對象,相關内容可以在我們關于 Compose 與現有 UI 內建的文檔中閱讀有關它的更多資訊。
視窗尺寸等級
為了更容易設計、開發和測試可調整大小的布局,我們釋出了視窗大小類 - 一系列可配置的 viewport breakpoints。
material3-window-size-class
作為 Material 3 庫集的一部分,它們現在在新庫中以 alpha 形式提供,開發者可以在支援不同的螢幕尺寸文檔中閱讀有關尺寸類的更多資訊,并檢視Crane 中的示例實作。
專注于 performance
為了幫助開發者了解和改進應用程式的性能,我們非常關注新的性能工具和指南,有了 performance,就可以更容易讓開發者了解的 App 可能卡頓的原因和位置。
從 Android Studio Dolphin 開始,開發者現在可以使用
Layout Inspector
檢查recomposition 的頻率,大量的 recomposition 可以幫助開發者指向可以優化方向。
此外,Android Studio Electric Eel 現在包括一個 recomposition 熒光筆,這是一個用于檢視哪些 composables 項何時 recomposition 的視覺輔助工具。
在 Android Studio 的新增功能中有關此新工具的更多資訊。
Compose 從根本上改變了編寫 UI 的方式,是以開發者可以采用一些新的方式來確定應用的性能。
新釋出的compose-performance建議如何編寫和配置 Compose 應用程式以獲得最佳性能。
在 I/O 演講中也有Jetpack Compose 中的常見性能問題,Compose 團隊描述了常見的性能錯誤以及如何修複它們。
性能是一個需要持續關注的領域,我們正在努力改進擴充工具和指導,同時我們非常感謝大家對我們迄今為止所做的工作的回報嗎,如有什麼問題可以在問題跟蹤中提出你的錯誤或在KotlinLang Slack 組中提問。
新工具
除了性能改進之外,還有新的工具更新可幫助開發者更有效地使用 Compose。
Android Studio Dolphin 現在處于 Beta 版,為 Compose 開發帶來了許多令人興奮的功能。
除了 recomposition 計數之外,還有新工具還包括動畫協調,以便可以一次檢視和浏覽所有動畫,以及多預覽注釋,以幫助開發者建構多種螢幕尺寸,同時為了能夠更快地疊代 Android Studio Electric Eel, 在 Canary 帶來了 LiveEdit。
為 Wear OS 編寫 Compose
我們很高興看到 Compose for Wear OS 進入 Beta 版!遵循與任何其他 Jetpack 庫相同的原則,Beta 意味着它的功能完整且 API 穩定,開發者現在可以開始建構 Wear 的應用。
如有需要可查閱部落格文章!
改進的指南
- 在 Compose 中的 State 上新的研讨會和改進的codelab
- 關于 Compose 中基本布局的 新研讨會和改進的codelab
- 新的性能文檔
- 更新了自定義輸入的文檔
- I/O 讨論Jetpack Compose 中的常見性能陷阱和Compose中的惰性布局
- 對于那些不熟悉程式設計的人,現在可以使用帶有 Compose 的 Android 基礎課程