性能优化之布局优化(ConstraintLayout)

本文探讨了如何使用ConstraintLayout进行性能优化,特别是在布局简化方面。介绍了ConstraintLayout的关键属性,如控制相对于位置、宽高比例约束、均分、位置偏差控制、基准线(Guideline)的使用,以及它们在优化布局和提升性能上的作用。通过实例展示了如何通过ConstraintLayout减少布局层级,实现更高效的布局设计。
摘要由CSDN通过智能技术生成
遇到的问题

面试的时候,面试官总问我做过性能优化吗?我这种低级程序员当然会说一些基本的防止给自己的挖坑,例如布局优化啊,减少覆盖渲染呀啥的,我经常说不要包裹过多的布局,因为在xml生成view对象的也是需要解析xml解析效率降低,渲染view的层级过多都会导致性能降低,都是屁话,总之就是降低xml布局的层级关系,怎么降低呢?今天我学习了下ConstraintLayout,发现他很强大,他几乎可以包裹一层即可完成复杂的布局

ConstraintLayout属性
控制相对于位置
  1. layout_constraintLeft_toLeftOf   
  2. layout_constraintLeft_toRightOf
  3. layout_constraintRight_toLeftOf
  4. layout_constraintRight_toRightOf
  5. layout_constraintBottom_toTopOf
  6. layout_constraintTop_toBottomOf

这组属性理解例如layout_constraintLeft_toLeftOf进行拆分constraintLeft代表的是控件的左边,toLeftOf去某控件的左边

画个图,例如我在A控件加入了属性 app:layout_constraintLeft_toLeftOf="id/B"代表让A控件的左边,去B控件的左边

注 意:app:layout_constraintLeft_toLeftOf="parent"参数可以使parent代表父控件

宽高比例约束

  1. layout_constraintDimensionRatio

在以前的不居中,例如横向填充父容器,高度为横向的一半,在以前的代码需要进行计算,动态设置高度,有了这个约束属性及很简单了

    <TextView
        android:id="@+id/banner"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#765"
        android:gravity="center"
        android:text="Banner"
        app:layout_constraintDimensionRatio="2:1" //宽高2:1
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent" />
均分

在以前均分,我们只需要在LinearLayout设置weight属性即可,使用ConstraintLayout相比较就要麻烦一些

    <TextView
        android:id="@+id/tab_1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#f00"
        android:gravity="center"
        android:text="tab1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintRight_toLeftOf="@+id/tab_2" />

    <TextView
        android:id="@+id/tab_2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#0f0"
        android:gravity="center"
        android:text="tab2"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toRightOf="@id/tab_1"
        app:layout_constraintRight_toLeftOf="@+id/tab_3" />


    <TextView
        android:id="@+id/tab_3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="#00f"
        android:gravity="center"
        android:text="tab3"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toRightOf="@id/tab_2"
        app:layout_constraintRight_toRightOf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值