Jetpack Compose 最新進展! 不來了解一下?
大家好,我是皇叔,最近開了一個安卓進階漲薪訓練營,可以幫助大家突破技術&職場瓶頸,從而度過難關,進入心儀的公司。
詳情見文章:沒錯!皇叔開了個訓練營
來源|Jetpack Compose 博物館
原文鏈接 https://android-developers.googleblog.com/2022/05/whats-new-in-jetpack-compose.html
Jetpack Compose 1.0 發(fā)布已經快一年了,在此期間我們看到社區(qū)是它的熱情,例如欣賞 Kotlin 語法的簡潔性、使 UI 開發(fā)變得更加便捷和更輕松的聲明式方法。
社區(qū)中的 Compose
我們已經看到許多公司開始大規(guī)模使用 Compose,例如 Compose 于 Play Store 團隊密切合作,他們在很早的時候就開始嘗試 Compose ,并了解到它不僅更有趣,而且對他們的開發(fā)人員生產力的提高也很有幫助。
Play Store 團隊:“所有新的 Play 商店功能都建立在這個框架之上,Compose 有助于為應用程序解鎖更快的速度和更順暢的發(fā)布。”
Twitter 團隊一直在應用程序的不同部分使用 Jetpack Compose。
Twitter 團隊:“Compose 讓我們更容易定義我們自己的組件,并使他們的 API 合約更加明確、靈活和直觀。”
Airbnb 團隊也采用了 Compose。
Airbnb 團隊:“ Jetpack Compose 是我們技術戰(zhàn)略的關鍵部分。生產力的提升是巨大的。”
我們很高興看到在這些大型又復雜的生產環(huán)境中使用 Compose, Compose 不進讓他們在 UI 開發(fā)中體驗到了更多的樂趣,而且提高了相關工程的優(yōu)勢!
「以上這些只是幾個示例,因為 Play 商店中排名前 1000 的應用程序中有 100 多個正在使用 Compose」。
這些密切合作以及始終聽取 Android 社區(qū)的反饋是我們開發(fā)過程的核心,也是推進我們未來路線圖的關鍵。
我們現(xiàn)在專注于支持更高級的用例,包括:
新的 API 和功能改進 新工具 更容易使用 Compose 進行構建
我們知道 Compose 從根本上改變了 UI 的構建方式,為了幫助開發(fā)進行必要的思維轉變,我們將發(fā)布更多關于高級主題的指導、演講和代碼實驗室,以及更深入的視頻,以便幫助開發(fā)者編寫更出色的應用。
Compose 1.2 測試版
今天,我們發(fā)布了Compose 1.2 的第一個 beta 版本,其中包含許多功能和改進。
文本改進
字體填充:我們通過可自定義的參數(shù) includeFontPadding 解決了問題跟蹤器中投票最多的錯誤之一,這里建議開發(fā)者將此值設置為 false,「因為這將使布局中的文本可以更精確地對齊」。
我們的計劃在未來版本中將其設置為的默認值,如果將值設置為 false 導致應用出現(xiàn)問題,請在上述 issue 中告知我們。此外當 includeFontPadding 設置為 false 時 ,可以通過設置 lineHeightStyle 參數(shù)來調整可組合文本的行高,結合起來可以是這樣的

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 中引入了可下載的字體,開發(fā)者可以使用 Compose 的新 API 來異步訪問 Google 字體,甚至可以定義備用字體,而無需任何復雜的設置。
使用可下載字體,開發(fā)者可以保持較小的 APK 大小并改善運行狀況,因為多個應用程序可以通過 provider 共享相同的字體。文字放大鏡: Android 文本提供了一個放大鏡控件,可以更輕松地選擇文本,Compose 現(xiàn)在也支持文本放大鏡。
拖動選擇時會顯示放大鏡,以幫助查看手指下的內容,Compose 1.1.0 將放大鏡用于文本字段中的選擇,現(xiàn)在 Compose 1.2.0 支持文本字段中的放大鏡和 SelectionContainer , 放大鏡也得到了增強以匹配 Views 中 Android 放大鏡的精確行為。
布局功能和改進
懶布局
隨著懶布局的發(fā)布, API LazyVerticalGrid 和 LazyHorizontalGrid 已經從實驗性階段的畢業(yè),一個新的實驗性 API 被添加,稱為 LazyLayout,它允許開發(fā)者實現(xiàn)自己的自定義惰性布局。
與 CoordinatorLayout 交互
當在視圖系統(tǒng)中嵌入可組合滾動的 CoordinatorLayout 時,開發(fā)者現(xiàn)在可以確保它們的滾動行為是可互操作,這讓可折疊工具欄的設置更加容易。現(xiàn)在開發(fā)者可以通過 rememberNestedScrollInteropConnection 將調用新實驗方法的結果傳遞給 nestedScroll 修飾符來選擇加入此行為
窗口插圖
Accompanist 里 insets 庫現(xiàn)在已使用該類升級到 Compose Foundation 庫,使用 WindowInsets對象,相關內容可以在我們關于 Compose 與現(xiàn)有 UI 集成的文檔中閱讀有關它的更多信息。
窗口尺寸等級
為了更容易設計、開發(fā)和測試可調整大小的布局,我們發(fā)布了窗口大小類 - 一系列可配置的 viewport breakpoints。material3-window-size-class 作為 Material 3 庫集的一部分,它們現(xiàn)在在新庫中以 alpha 形式提供,開發(fā)者可以在支持不同的屏幕尺寸文檔中閱讀有關尺寸類的更多信息,并查看 Crane 中的示例實現(xiàn)。
專注于 performance
為了幫助開發(fā)者了解和改進應用程序的性能,我們非常關注新的性能工具和指南,有了 performance,就可以更容易讓開發(fā)者理解的 App 可能卡頓的原因和位置。
從 Android Studio Dolphin 開始,開發(fā)者現(xiàn)在可以使用 Layout Inspector 檢查recomposition 的頻率,大量的 recomposition 可以幫助開發(fā)者指向可以優(yōu)化方向。
此外,Android Studio Electric Eel 現(xiàn)在包括一個 recomposition 熒光筆,這是一個用于查看哪些 composables 項何時 recomposition 的視覺輔助工具。

Compose 從根本上改變了編寫 UI 的方式,因此開發(fā)者可以采用一些新的方式來確保應用的性能。
新發(fā)布的 compose-performance 建議如何編寫和配置 Compose 應用程序以獲得最佳性能。
在 I/O 演講中也有 Jetpack Compose 中的常見性能問題,Compose 團隊描述了常見的性能錯誤以及如何修復它們。
性能是一個需要持續(xù)關注的領域,我們正在努力改進擴展工具和指導,同時我們非常感謝大家對我們迄今為止所做的工作的反饋嗎,如有什么問題可以在問題跟蹤中提出你的錯誤或在 KotlinLang Slack 組中提問。
新工具
除上述改進之外,還有開發(fā)工具也在更新,幫助你更有效地使用 Compose。Android Studio Dolphin,現(xiàn)在是 Beta 版,為 Compose 的開發(fā)帶來了令人興奮的功能。除了重組計數(shù),新的工具還包括動畫協(xié)調,這樣你就可以一次看到動畫的所有變化細節(jié),以及 MultiPreview 注釋,幫助你為多種屏幕尺寸構建。為了使你能夠更快地迭代Android Studio Electric Eel(在Canary中)帶來了 LiveEdit 功能。
為 Wear OS 編寫 Compose
我們很高興看到 Compose for Wear OS 進入 Beta 版!遵循與任何其他 Jetpack 庫相同的原則,Beta 意味著它的功能完整且 API 穩(wěn)定,開發(fā)者現(xiàn)在可以開始構建 Wear 的應用。
改進指南
此次我們添加并修改了許多關于 Compose 的指南:
在 Compose 中的 State 上新的研討會和改進的codelab 關于 Compose 中基本布局的 新研討會和改進的codelab 新的性能文檔 更新了自定義輸入的文檔 I/O 討論 Jetpack Compose 中的常見性能陷阱和Compose中的惰性布局 對于那些不熟悉編程的人,現(xiàn)在可以使用 帶有 Compose 的 Android 基礎課程
最后
我們希望你能像我們一樣發(fā)現(xiàn)這些新功能,如果你還沒有開始,現(xiàn)在是時候學習Jetpack Compose了。
為了失聯(lián),歡迎關注我防備的小號
微信改了推送機制,真愛請星標本公號??



