Android Jetpack Compose基础之Compose视图结构

引言:Compose视图是如何构成的,如何运行在传统的View上的呢

Compose ui是由视图树组成,树是由LayoutNode构成,Composable最终统一由CompseView进行管理,ComposeView是连接传统View和Compose的桥梁。通过布局查看器查看布局结构如下
请添加图片描述
接下来一次介绍它们

什么是AbstractComposeView

它有三个子类ComposeView、DialogLayout、PopupLayout子类,分别对应Android下Activity、Dialog、Popup的window窗口,它是对Android系统下的各类窗口进行适配,并生成对应的Compose。

ComposeView它又是什么 (ViewGroup)

它继承自AbstractComposeView,负责对Android平台的Activity的窗口进行适配;
1、ComposeView接入传统的View视图后,内部的ui都在Compose内部完成,来自AndroidComposeView的绘制,测量布局、手势事件分发都是下沉到LayoutNode去完成

class ComposeView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : AbstractComposeView(context, attrs, defStyleAttr) {
   }

AndroidComposeView作用

它是ComposeView唯一的子节点,它也是一个ViewGroup,也是LayoutNode视图树的持有者它的结构如下

internal class AndroidComposeView(
    context: Context,
    override val coroutineContext: CoroutineContext
) : ViewGroup(context), Owner, ViewRootForTest, PositionCalculator, DefaultLifecycleObserver {
   
    override val root = LayoutNode().also {
   
        it.measurePolicy = RootMeasurePolicy
        it.density = density
        // Composed modifiers cannot be added here directly
        it.modifier = Modifier
            .then(semanticsModifier)
            .
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值