文章目录

  • android约束布ConstraintLayout
    • 常用操作
      • 居中
      • 控件按比例显示
      • 删除约束
      • 屏障约束
      • 动画效果
    • 参考

android约束布ConstraintLayout

  • 官方介绍:https://developer.android.google.cn/training/constraint-layout
  • 官方例子:views-widgets-samples/ConstraintLayoutExamples at master · android/views-widgets-samples

常用操作

居中

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

控件按比例显示

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

删除约束

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

屏障约束

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

  • 如果想实现如下效果,那么就要使用链
    android约束布局ConstraintLayout_第10张图片

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

  • 之后可以选择对齐方式
    android约束布局ConstraintLayout_第12张图片

  • 在这里可以选择不同的style
    android约束布局ConstraintLayout_第13张图片

  • 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

更多相关文章

  1. Android软键盘-弹起时布局向上拉-登录界面
  2. Android浏览器显示大分辨率图片的问题 分享
  3. Android视图框架
  4. Android for opencv(1)android使用opencv基本操作:读写 图片,操作像
  5. Android的6种布局管理器总结
  6. RelativeLayout_相对布局 属性的描述
  7. 相对布局各种属性说明
  8. 【Android布局】在程序中设置android:gravity 和 android:layout
  9. 关于FrameLayout布局的位置问题

随机推荐

  1. android 解决 Could not find class 'XXX
  2. Android Studio 配置模拟器AVD存放路径(默
  3. Android setContentView源码解析
  4. Android如何连接和操作SQLite数据库
  5. JavaME无法满足Android,只有设计 Dalvik
  6. Android的Monkeyrunner
  7. Android(安卓)源码学习资源
  8. (展讯 /RK3066)Android:ADB详解 (2013-01
  9. android 中几种adapter的总结
  10. Android(安卓)创建和使用公共library工程