欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android约束布局ConstraintLayout

程序员文章站 2022-04-01 10:45:00
https://www.jianshu.com/p/28bc3619fc82...

android约束布ConstraintLayout

常用操作

居中

  • 如果想让控件居中,设置百分之50即可,如下图
    android约束布局ConstraintLayout

控件按比例显示

  • 如果想让控件按比例展示,首先先把切换为Match Constraints(即 android:layout_width=“0dp”),如下图
    android约束布局ConstraintLayout
  • 然后就可以看到左上角出现三角形
    android约束布局ConstraintLayout
  • 点击三角形即可出现设置比例的ratio
    android约束布局ConstraintLayout

删除约束

  • 在windows上通过按住Ctrl再点击约束即会变成红色,此时就可以删除约束了
    android约束布局ConstraintLayout

屏障约束

  • 首先右键添加一个barrier
    android约束布局ConstraintLayout
  • 添加完后在component tree窗口可以看到该组件
    android约束布局ConstraintLayout
  • 然后就可以把放在屏障里的控件拖拽到barrier里面,如图
    android约束布局ConstraintLayout
  • 最后设置下方向,然后拖动下放进barrier里的控件试试看
    android约束布局ConstraintLayout

  • 如果想实现如下效果,那么就要使用链
    android约束布局ConstraintLayout

  • 框选要组成链的控件后,右键选择chains即可增加水平链或垂直链 android约束布局ConstraintLayout

  • 之后可以选择对齐方式
    android约束布局ConstraintLayout

  • 在这里可以选择不同的style
    android约束布局ConstraintLayout

  • Spread:视图是均匀分布的(在考虑外边距之后)。这是默认值。

  • Spread inside:第一个和最后一个视图固定在链两端的约束边界上,其余视图均匀分布。

  • Weighted:当链设置为 spread 或 spread inside 时,您可以通过将一个或多个视图设置为“match constraints”(0dp) 来填充剩余空间。默认情况下,设置为“match constraints”的每个视图之间的空间均匀分布,但您可以使用 layout_constraintHorizontal_weight 和 layout_constraintVertical_weight 属性为每个视图分配重要性权重。如果您熟悉线性布局中的 layout_weight 的话,就会知道该样式与它的原理是相同的。因此,权重值最高的视图获得的空间最大;相同权重的视图获得同样大小的空间。

  • Packed:视图打包在一起(在考虑外边距之后)。 然后,您可以通过更改链的头视图偏差调整整条链的偏差(左/右或上/下)

动画效果

  • 在约束布局中可以使用 ConstraintSetTransitionManager 为尺寸和位置元素的变化添加动画效果,注意这种效果只针对位置和尺寸,不包含颜色等其他
  • 而且这种效果的实现需要写两个布局文件,分别作为开始和结束关键帧
fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.keyframe_one)
        constraintLayout = findViewById(R.id.constraint_layout) // member variable
    }

    fun animateToKeyframeTwo() {
        val constraintSet = ConstraintSet()
        constraintSet.load(this, R.layout.keyframe_two)
        TransitionManager.beginDelayedTransition()
        constraintSet.applyTo(constraintLayout)
    }

参考

  • https://developer.android.google.cn/training/constraint-layout

本文地址:https://blog.csdn.net/huweijian5/article/details/84258503