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