一起Talk Android吧(第五百零九回:约束布局中的组功能一)

Posted talk_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第五百零九回:约束布局中的组功能一)相关的知识,希望对你有一定的参考价值。

文章目录

各位看官们大家好,上一回中咱们说的例子是"多层布局功能",这一回中咱们说的例子是"约束布局中的组功能"。闲话休提,言归正转, 让我们一起Talk android吧!

功能介绍

我们在这里说的组功能表示把多个组件组合在一起形成一个组,然后通过组来统一管理组内的控件。而且我们讨论的组功能只限于约束布局内,其它布局暂时不讨论。

使用方法

Group

约束布局提供了Group表示一个组,使用时可以在布局管理器中选择多个组件,然后点击右键->Helper->Group,会自动把所有的组件放到一个组中。该操作会生成以
以下代码:

 <androidx.constraintlayout.widget.Group
    android:id="@+id/group"
    android:visibility="invisible"
    app:constraint_referenced_ids="circle_out_1,circle_out_3,circle_out_5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</androidx.constraintlayout.widget.Group>

代码中的constraint_referenced_ids属性中有多个id值,这些id就是我们在布局管理器中选择的组件。

如果大家不喜欢使用布局管理器,也可以直接在xml中输入上面的代码,然后手动把其它组件的id赋值给constraint_referenced_ids属性。

这两种方法实现的效果相同,只是一种是通过布局管理器自动创建Group,另外一种是通过代码手动创建Group.注意:不管使用哪种方法,都需要修改组的id,方便以后使用。

组创建好以后,可以在Group中通过visibility属性来控制组的显示和隐藏功能,比如:示例代码中给该属性赋值为invisible后,组的控件全部被隐藏了。

目前只发现Group有显示和隐藏组件的功能,Group的长度,对齐等属性都没有效果,背景色属性也没有效果,ObjectAnimator动画更是没有效果.

Layer

除了上面介绍的组外,约束布局还提供了Layer表示一个组,它和Group的用法完全相同,可以通过布局管理器添加,也可以直接通过代码实现,下面是示例代码:

<androidx.constraintlayout.widget.Layer
    android:id="@+id/group"
    app:constraint_referenced_ids="circle_out_1,circle_out_3,circle_out_5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</androidx.constraintlayout.widget.Layer>

Group通过组件的ID来包含组件,Layer也是,它们使用相同的属性:constraint_referenced_ids.

我在约束布局推出之前经常使用线性布局中来包含多个组件构成一个组,然后通过组统一管理多个组件,比如统一设置背景色;现在使用Layer可以实现此功能,它还可以添加监听器来响应事件,也可以设置动画.这些功能是Group所不具备的.

对比总结

我们介绍了两种组:GroupLayer. 其中Group只能单纯地用来显示或者隐藏组内的控件;而Layer可以设置背景色,绑定ObjectAnimaor动画。这些功能是非常适用的功能。相比之下,Layer的功能比Group的功能更加强大。我更加推荐大家使用Layer.

注意:不论是Group还是Layer都只能在约束布局中使用。

看官们,关于"约束布局中的组功能"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

以上是关于一起Talk Android吧(第五百零九回:约束布局中的组功能一)的主要内容,如果未能解决你的问题,请参考以下文章

一起Talk Android吧(第四百零九回:绘制不规则图形)

一起Talk Android吧(第五百零五回:如何调整组件在约束布局中的大小)

一起Talk Android吧(第五百零四回:如何调整组件在约束布局中的位置)

一起Talk Android吧(第五百零六回:如何调整组件在约束布局中的角度)

一起Talk Android吧(第五百零七回:图片滤镜ImageFilterView)

一起Talk Android吧(第五百一十九回:波浪上升动画)