Jetpack Compose 1.0 正式版已經發布快一年的時間了,我們看到社區正以極大的熱情采納和使用 Compose:Kotlin 語法的簡潔性以及使開發界面變得更快速、更簡單的聲明式開發方式得到了廣大開發者們的贊賞。
Compose 在社區中的反響
我們看到許多公司已經在大規模采納 Compose 為其應用開發最新、最具創造性的功能。例如,與我們密切合作的 Play 商店團隊很早便開始使用 Compose,通過他們我們了解到,使用 Compose 不僅更有趣,且對他們團隊生產力的提高也大有助益。Play 商店團隊還告訴我們 "Play 商店的所有新功能都建立在該框架之上,Compose 有助于為應用解鎖更快的速度以及更順暢地發布"。與此同時,Twitter 也已經在應用的不同部分使用了 Jetpack Compose 并從中受益,因為 "Compose 讓我們更容易定義自己的組件,并使它們的 API 更明確、靈活和直觀。"Airbnb 團隊同樣也采用了 Compose: "Jetpack Compose 是我們技術戰略的重要組成部分,生產力因此獲得了大幅提高。"
-
許多公司已經在大規模采納 Compose
https://developer.android.google.cn/jetpack/compose/adopt#what-developers-are-saying -
Twitter
https://android-developers.googleblog.com/2022/04/twitter-going-all-in-on-jetpack-compose.html
我們很高興地看到這些團隊在大規模和復雜的生產環境中仔細地評估并使用了 Compose,所帶來的結果也不僅是讓界面開發更清晰有趣,也帶來了更多工程上的收益。這只是其中幾個案例,因為 Play 商店排名前 1,000 的應用中有超過 100 個正在使用 Compose。
我們在開發過程中始終保持著與這些團隊的密切合作,并不斷聽取廣大 Android 社區的反饋,這也是我們推進路線圖的關鍵。如今,我們專注于提供新的 API 和特性改進以支持您實現更高級的需求,這些改進將和新的工具一起助力您更輕松地使用 Compose 構建應用。Compose 從根本上改變了界面的構建方式,為了幫助您實現必要的思維轉變,我們將發布更多關于高級主題的指南、演講和 Codelab,以及更具深度的視頻,以便您編寫外觀和性能同樣出色的應用。以下是 Compose 1.2 Beta 版本的新特性:
- 路線圖https://developer.android.google.cn/jetpack/androidx/compose-roadmap
Compose 1.2 Beta
我們在今年的 Google I/O 大會上發布了 Compose 1.2 的第一個 Beta 版本,其中包含了許多特性和改進:https://developer.android.google.cn/jetpack/androidx/releases/compose#versions
文本改進
字體邊距我們在問題跟蹤器中定位到了得票最高的問題之一,并通過將 includeFontPadding 設置為自定義參數來解決它。我們推薦您將該值設為 false,因為這會使布局中的文本更精確地對齊。我們計劃在未來的版本中將 false 設為默認值。如果將值設為 false 導致您的應用出現問題,請在上述錯誤報告中告知我們。此外,當 includeFontPadding 被設置為 false 時,您可通過設置 lineHeightStyle 參數來調整 Text 可組合項的行高。兩個參數結合使用的效果如下:
△以多行的 Text 可組合項為例:
左圖為設置 includeFontPadding 為 true (當前默認值) 的效果,
右圖為設置 includeFontPadding 為 false 且設置了 lineHeightStyle 的效果Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = false
),
lineHeightStyle = LineHeightStyle(
alignment = Alignment.Center,
trim = Trim.None
)
)
)
-
得票最高的問題之一
https://issuetracker.google.com/u/0/issues/171394808
可下載字體Compose 1.2 還加入了可下載字體。您可以使用 Compose 的新 API 來異步訪問 Google Fonts,甚至還可以定義備用字體,這些操作無需任何復雜的配置。通過可下載字體,您可以保持較小的 APK 文件體積并改善用戶的系統運行狀況,因為多個應用可通過提供程序共享相同字體。
- 可下載字體http://developer.android.google.cn/jetpack/compose/text#downloadable-fonts
拖動選擇圖標時會顯示放大鏡,以便于您查看指尖下方的內容。Compose 1.1.0 已支持在所選擇的文本字段中使用放大鏡,Compose 1.2.0 在文本字段和 SelectionContainer 中都支持放大鏡。Compose 放大鏡也得到了增強以匹配 View 中放大鏡的精確行為。
- SelectionContainerhttps://developer.android.google.cn/reference/kotlin/androidx/compose/foundation/text/selection/package-summary#SelectionContainer(androidx.compose.ui.Modifier,kotlin.Function0)l
布局功能和改進
惰性布局惰性布局在不斷發展,隨著網格 API LazyVerticalGrid 和 LazyHorizontalGrid 順利通過實驗性使用階段,我們新增了一個實驗性 API——LazyLayout,它允許開發者實現自定義惰性布局。想要了解這些 API 的更多信息,請觀看 I/O 大會演講:Compose 中的惰性布局。
-
LazyVerticalGrid
http://link.gevents.cn/D5dyVH
-
LazyHorizontalGrid
http://link.gevents.cn/863Hvf
-
LazyLayout
http://link.gevents.cn/aBMaBU -
Compose 中的惰性布局
https://io.google/2022/program/14bb63ef-2dd1-460a-9871-5f51ec1afec9/
與 CoordinatorLayout 互操作從現在起,當您在 View 系統的 CoordinatorLayout 中嵌套了一個支持滾動的可組合項時,您可以確保它們的滾動行為是可互操作的。這讓可折疊工具欄的配置變得更加簡單。您可以調用新的實驗性 API rememberNestedScrollInteropConnection,并將其調用結果傳入 nestedScroll 修飾符來啟用該行為,可以查看這個示例代碼了解更多:https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/NestedScrollInteropSamples.kt
窗口邊襯區Accompanist 中的 insets 庫現已升級到 Compose Foundation 庫中,請改為使用 WindowInsets 類。如需了解更多,請查閱將 Compose 與現有界面集成技術文檔:https://developer.android.google.cn/jetpack/compose/interop/compose-in-existing-ui#ime-animations
-
Accompanist 中的 insets 庫
https://google.github.io/accompanist/insets/
-
WindowInsets
https://developer.android.google.cn/reference/kotlin/androidx/compose/foundation/layout/WindowInsets
窗口大小類
為了更簡單地設計、開發以及測試可調整尺寸布局,我們發布了窗口大小類——一組主觀的視窗斷點。它們現在作為 Material 3 系列庫的一部分,在新庫 material3-window-size-class 的 alpha 版本中可用。如需了解更多有關窗口大小類的信息,請查閱支持不同屏幕尺寸以及 Crane 中的示例實現。
-
material3-window-size-class
https://developer.android.google.cn/jetpack/androidx/releases/compose-material3 -
支持不同屏幕尺寸
https://developer.android.google.cn/guide/topics/large-screens/support-different-screen-sizes#window_size_classes - Crane 中的示例實現https://github.com/android/compose-samples/commit/0edb1926ac56c50a188be022c15117c07811fcdf
專注于性能
為幫助您了解和提升應用的性能,我們花費了大量精力為您提供新的性能工具和指南。這些內容可以幫助您更輕松地理解應用可能出現卡頓的原因和位置。
從 Android Studio Dolphin 開始,您可以使用 Layout Inspector 檢查可組合項發生重組的頻率。預期外的大量重組可以為您指明可優化的可組合項。此外,Android Studio Electric Eel 現已包含一個重組高亮指示器,它是一個視覺輔助工具,可以查看哪些可組合項在何時發生重組。更多關于該新工具的信息請查閱博客 Android Studio 中的新特性:
https://android-developers.googleblog.com/2022/05/whats-new-in-android-studio.html
△Layout Inspector 顯示重組計數和重組高亮指示器
Compose 從根本上改變了您編寫界面的方式,您可以遵循我們發布的最佳實踐來確保應用的高性能。例如,您可以通過該文檔了解關于如何編寫和配置您的 Compose 應用以實現最佳性能的建議。在 I/O 演講 Jetpack Compose 中常見的性能問題中,Compose 團隊介紹了常見的性能錯誤以及這些錯誤的解決方法。
-
文檔
https://developer.android.google.cn/jetpack/compose/performance
-
Jetpack Compose 中常見的性能問題
https://io.google/2022/program/213421b6-9873-464f-9b36-38eeb232a854/
性能是一個需要持續關注的領域,我們正在努力改進并擴展相關工具和指南。同時,我們非常感謝您對我們迄今為止所有工作的反饋。您可以在問題跟蹤器中提出您開發中遇到的問題,也可以在 KotlinLang Slack 群組中提問。
-
問題跟蹤器
https://issuetracker.google.com/issues/new?component=612128
-
KotlinLang Slack
https://surveys.jetbrains.com/s3/kotlin-slack-sign-up
????????????新??????????工具
除了完善 Compose 之外,我們還增加了新工具來幫助您更高效地使用 Compose。Android Studio Dolphin 目前已處于 Beta 階段,為 Compose 開發帶來了非常激動人心的特性。除了重組計數,新工具還包含了能幫助您一次查看和瀏覽所有動畫的 Animation Coordination,以及能幫助您為多個屏幕尺寸構建應用的 MultiPreview 注解。此外為了幫助您快速迭代,Android Studio Electric Eel (Canary 版) 還帶來了 LiveEdit 這個新特性。
-
Android Studio Dolphin
https://developer.android.google.cn/studio/preview
請查閱 I/O 演講: Android 開發工具中的新特性以了解所有詳細信息,同時我們希望能得到您的反饋,從而塑造更符合您需求的 Compose 工具:
https://io.google/2022/program/8215c766-f097-4b18-bc97-5085d77c4dad/
Compose for Wear OS Beta 版發布
如果有什么比 Compose 更出色,那就是更多更全面的 Compose。因此,我們很高興見證 Compose for Wear OS 進入 Beta 階段。遵循與其他 Jetpack 庫相同的原則,Beta 意味著它的功能完整且 API 穩定,您可以開始準備為生產環境構建應用。如需了解更多信息,請查閱這篇博客文章:
https://android-developers.googleblog.com/2022/05/announcing-compose-for-wear-os-beta.html
更完善的指南
我們增加并修訂了關于 Compose 的一系列指南供您參考和學習:- 關于在 Compose 中使用狀態的研討會和改版的 Codelab
-
研討會
https://io.google/2022/program/c9768969-9e81-4865-9dff-29a2ab1201ea/ -
Codelab
https://developer.android.google.cn/codelabs/jetpack-compose-state
- 關于 Compose 中基礎布局的研討會和改版的 Codelab
-
研討會
https://io.google/2022/program/05c2523e-be40-4c63-8308-5379b9717a7c/ -
Codelab
https://developer.android.google.cn/codelabs/jetpack-compose-layouts
-
全新的 Compose 性能說明文檔
https://developer.android.google.cn/jetpack/compose/performance
-
更新的自定義輸入文檔
https://developer.android.google.cn/jetpack/compose/handling-interaction.html
- I/O 演講視頻:Jetpack Compose 中常見的性能問題以及 Compose 中的惰性布局
-
Jetpack Compose 中常見的性能問題
https://io.google/2022/program/213421b6-9873-464f-9b36-38eeb232a854/ -
Compose 中的惰性布局
https://io.google/2022/program/14bb63ef-2dd1-460a-9871-5f51ec1afec9/
-
對于新手開發者,可查閱 Android 基礎課程:使用 Compose
https://developer.android.google.cn/courses/android-basics-compose/course
Happy Composing!
我們期待您能像我們一樣為這些新特性感到興奮,如果您尚未開始,那么現在正是學習 Jetpack Compose 的好時機,了解它如何適配您的團隊和開發過程,這樣您便能體驗到提高效率和開發者生產力所帶來的好處。Happy Composing!
- Jetpack Composehttp://developer.android.google.cn/jetpack/compose
審核編輯 :李倩
-
API
+關注
關注
2文章
1508瀏覽量
62230 -
框架
+關注
關注
0文章
403瀏覽量
17516
原文標題:一起看 I/O | Jetpack Compose 中的新特性
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論