簡體   English   中英

Jetpack compose 如何在引擎蓋下工作

[英]How does jetpack compose work under the hood

新的 Jetpack compose 組件添加到 Arch 組件就像 Flutter Ui 制作一樣。

它是如何制作 Ui 的?

它是使用像 Skia 這樣的原生代碼引擎,還是仍然像以前一樣遵循 ViewGroup 的方式?

Compose 創建一個當前名為AndroidComposeView的視圖,它繼承 ViewGroup,並在其 canvas 上繪制小部件樹。 它還處理此視圖的運動/鍵盤事件。

由於實現細節,該視圖中可能添加了更多輔助視圖,但基本上對於 Compose 的“小部件”,您不會在視圖層次結構中看到經典視圖。 布局檢查器目前對 Compose 沒有幫助 - 您可以嘗試它,但您不會看到您的小部件。

承諾開發者可以創建自己的自定義小部件,可以直接在 Canvas 上繪畫,為自己或孩子設置布局,或處理輸入事件。

但是,這里使用的Canvas和許多其他類不是標准框架類。 例如,用於 Compose 的 Canvas 在 Kotlin 中重新定義。 類似的還有新的PaintShape和其他新類。 他們在內部使用框架類進行工作,但這是實現細節。 繪圖時,您將使用這些新類。

由於 Compose 是一個庫,並且不存在於 Android 設備上,因此該庫包含在每個使用 Compose 的應用程序中。 這里也沒有涉及本機代碼,所有內容都在 Kotlin 中完成,並成為您應用程序的 dexed 代碼的一部分。 通過使用 Compose,您的應用將不包含任何額外的原生庫(如果創建者不改變主意,可能會這樣)。

不,它沒有使用舊 UI Toolkit 中的任何東西,實際上他們正在構建它來克服舊 UIToolkit 的問題。

Compose is not views, It's a new set of Jetpack UI Widget, Basically, it's a Kotlin compiler plugin which renders the Android Canvas (I suppose there's no documentation for this yet) with full compatibility of existing android's view system, the last Dev summit there是一個討論它如何在內部工作的演講,I/O 也有另一個演講

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM