说明
上篇文章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去分析布局文件,是很容易发现这是满足咱们布局绘制的扁平化原则。
网友评论