各位看官们,大家好,上一回中咱们说的是Android中布局编辑器的例子,这一回中咱们的例子是约束布局。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,学会布局编辑器后我们在再介绍一种新的布局:约束布局(ConstraintLayout)。因为布局编辑器在约束布局上才能发最大限度地发挥出它的作用来。
约束布局(ConstraintLayout)是官方在2016年推出的新布局,可以当作是增强版的相对布局,现在使用AST创建Activity时默认使用约束布局,由此可见约束布局非常强大而且重要。我们还是从官方文档开始学习约束布局。官方写的内容非常全面而且详细,不过偏重于以拖拽方式操作控件,也就是在design视图下操作,而不是使用代码编辑布局。对于官方文档中的内容,我做了一些自已的理解和补充,具体如下:
添加约束
布局中的控件必须在水平和垂直两个方向上添加约束,这样才能固定一个控件,不然控件默认显示在布局左上角。
控件的id是必须的,虽然默认生成了id,但是建议修改成自已定义的,而且添加控件后第一件事就是修改控件id。不然以后添加约束就不知道在和哪个控件发生约束。
添加的约束掌握start,end,top.bottom
四个方向就可以。因为约束属性太多了,属性的名字比较长而且容易混淆,没有四个方向的把握就会搞不清楚是哪个方向的约束。
对齐方式、基线对齐和引导线约束这三个方面的内容经常使用的。一定要掌握。
调整约束偏差
约束偏差,有的有,有的没有,这个是怎么回事?还是没有仔细看文档:对某个视图的两侧添加约束条件(并且同一维度的视图尺寸为“fixed”或者“wrap Content”)时才可以调整约束偏差。这个操作相当于按照百分比的方式给布局上的控件排列位置,非常有用。
调整视图尺寸
这个章节的内容全是基础功能必须掌握,不然就不会在布局中调整控件的尺寸大小。
尺寸比如何显示出来?如果至少有一个视图尺寸设置为“match constraints”才可以显示。
将尺寸设置为比率
这个需要满足条件:如果至少有一个视图尺寸设置为“match constraints”(0dp),您可以将视图尺寸设置为 16:9。这个设计对于视频控件非常有用。
使用链控制线性组
使用场景就是同行或者同列有多个控件时可以让多个控件组成一个链,然后方便调节各个控件之间的距离,官方提供了4种距离调节方式spread,spread inside,weighted,packed
。它们的差别看官方文档的图就能明白。我重点说一下如何设置调节方式,因为这和官方文档中的内容不一样:
选中其中任何一个控件,右键->Chainsd-> H/V chain style
后就出现了三种距离调节方式,而weighted需要在每个控件的属性中把width/hight设置为0dp.然后点击属性右侧的加号添加一个layout_constraintHorizontal_weight这样的属性才可以,这个名字太长,输入weight关键字会弹出匹配的属性,然后选择想要的属性就可以。这些操作方式的设置在官方文档写的不详细,以我写的内容为准。
自动创建约束条件
这个我不推荐,因为添加的约束都不知道有什么作用,而且不利于代码管理。
关键帧动画
这个没有动手实践,以后有时间了再学习。
屏障约束
这个就是barrier
,看不到位置,如何设置?需要在Component Tree中把需要被屏障的控件拖到屏障中后,屏障才能显示出来;
官方文档中说屏障对于一组控件有用,不过我没有体会到。我觉得它和guideline差不多,不同之处在于它会随着控件的移动而移动,而guideline则不会移动.
最后我分享我的使用体验:
约束布局配合上guideline
可以当作线性布局和表格布局来使用。在控件的线束上设置偏差或者比率可以当作百分比布局来使用。因此可以使用约束布局代替代传统布局(线性布局、相对布局等),这个也有专门的转换命令选择(使用右键会弹出来)。
约束布局减少了布局的嵌套,对于界面分析有好处,而且可以提高程序的性能。不过约束布局也有缺点,那就是约束的属性太多,使用布局编辑器生成的代码比较多,属性占用了很大一部分内容。如果使用代码编写非常困难,因此推荐使用布局编辑器通过拖拽操作来编写UI界面。
总之瑕不掩瑜,我还是推荐使用约束布局替代传统布局(线性布局、相对布局等)。这些内容是我的个人使用体验,欢迎大家在评论区交流讨论自已的使用体验。
看官们,关于Android中约束布局的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!