Android性能优化-ConstraintLayout

说明

上篇文章Android性能优化-布局优化(一)咱们说过,为了解决布局冗余,我们的目标是布局扁平化。

​ ConstraintLayout就是google为此设计诞生的,早期我们一般使用FrameLayout/LinearLayout/RelativeLayout去绘制布局,无法避免会产生多层级嵌套,布局越嵌越深的情况。约束布局ConstraintLayout的出现就是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。

官方API:

https://developer.android.com/reference/android/support/constraint/ConstraintLayout

使用方式

添加依赖
compile 'com.android.support.constraint:constraint-layout:1.1.3'
相对定位
layout_constraintLeft_toLeftOf
layout_constraintLeft_toRightOf
layout_constraintRight_toLeftOf
layout_constraintRight_toRightOf
layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf
角度定位
layout_constraintCircle : references another widget id
layout_constraintCircleRadius : the distance to the other widget center
layout_constraintCircleAngle : which angle the widget should be at (in degrees, from 0 to 360)
边距
layout_goneMarginStart
layout_goneMarginEnd
layout_goneMarginLeft
layout_goneMarginTop
layout_goneMarginRight
layout_goneMarginBottom

注:Margin的设置 必须先约束该控件在ConstraintLayout里的位置

居中和偏移
layout_constraintHorizontal_bias
layout_constraintVertical_bias
尺寸和约束
android:minWidth set the minimum width for the layout
android:minHeight set the minimum height for the layout
android:maxWidth set the maximum width for the layout
android:maxHeight set the maximum height for the layout

chain_spread展开 默认 展开元素
chain_spread_inside 展开元素,但链的两头紧贴parent
chain_packed 链的元素打包在一起

辅助工具
Optimizer
  • none: 无优化
  • standard: 仅优化直接约束和屏障约束(默认)
  • direct:优化直接约束
  • barrier:优化屏障约束
  • chain: 优化链约束
  • dimensions:优化尺寸测量
Barrier

屏障,方便约束单个控件对多个控件

Group

Group可以把多个控件归为一组,方便显示隐藏一组控件

placeHolder
GuideLine
        android:orientation="vertical" // 设置方向
        app:layout_constraintGuide_percent="0.6" // 值得取值范围为 0.0 到 1.0 ,描述的是百分比偏移量。

特殊注明:

  • margin只能设置正值,负值无效
  • 代码动态修改属性,使用ConstraintSet
  • ConstraintSet和TransitionManager配合使用 可以实现动画效果

​ ConstraintLayout因为只是单纯的使用问题,在这就不做详细讲诉。通过Layout Inspector去分析布局文件,是很容易发现这是满足咱们布局绘制的扁平化原则。

你可能感兴趣的:(Android性能优化-ConstraintLayout)