當前位置:編程學習大全網 - 源碼下載 - Compose UI

Compose UI

compose是android新推出的UI工具包,使用可組合函數以聲明式來構建UI,不再使用xml布局文件

使用compose構建ui的例子:

運行效果圖

既然Compose是全新的壹套UI工具包,那麽它是如何構建UI的,是否用到了諸如LinearLayout、RelativeLayout、Button、Text這些android view呢?

讓我們來分析上圖的布局

遍歷view,輸入如下:

沒有ImageView、TextView等android view,看來 compose是完全自己實現了壹套布局和繪制流程。

雖說compose沒有使用android的ui組件,但是如果沒有硬件加速,還是會有很多子view,例如關閉compose的壹個標誌位,會出現很多view 。如反射設置androidx.compose.ui.platform.AndroidComposeView.isRenderNodeCompatible為false,再打印view樹如圖:

多出了ViewLayerContainer,它包含了很多ViewLayer。後面再分析為什麽會出現這麽多ViewLayer。

Column方法,最後執行Layout方法

Image方法,最後執行Layout方法

Text方法壹樣最後執行Layout方法

Layout方法

執行ComposeUiNode.Constructor會創建壹個LayoutNode

最後所有的方法都執行到了ComposeNode方法,這裏邊進行創建LayoutNode並創建子LayoutNode。基本上可以確定compose ui由LayoutNode來組成

compose的ui繪制不依賴android ui控件,是完全實現了壹套繪制流程。通過LayoutNode樹完成繪制,LayoutNode內部通過LayoutNodeWrapper來層層繪制,每層最終由DrawModifier(Modifier子類)來進行繪制

compose的布局同樣不使用android ui控件布局,是全新的壹套布局流程。通過LayoutNode樹完成布局,LayoutNode的大小和位置由LayoutNodeWrapper鏈來確定,最終都是通過Modifier來確定布局的

  • 上一篇:室內設計定位怎麽寫
  • 下一篇:超級虐心的古代言情小說推薦
  • copyright 2024編程學習大全網