美文网首页
ConstraintLayout之ConstraintSet简记

ConstraintLayout之ConstraintSet简记

作者: AnterC | 来源:发表于2022-05-28 17:25 被阅读0次

为更方便地实现控件的变换动画,Android引入了ConstraintSet,来看下下面这个例子,我们需要将图1两个按钮的位置变换成图2两个按钮的位置,用补间动画和属性动画都可以实现,这里不讲这两种方式,来看看ConstraintSet的实现方式:

图1 图2

两者的布局分别是activity_main.xml

activity_main.xml

和activity_main1.xml

activity_main1.xml

MainActivity.java中的实现代码:

private ConstraintSetcs1, cs2;

private ConstraintLayoutcl;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    cs1 =new ConstraintSet();

    cs2 =new ConstraintSet();

    cl = findViewById(R.id.cl_container);

    cs1.clone(cl);

    cs2.clone(this, R.layout.activity_main1);

}

/**

* 变换成垂直

*/

private void vertical() {

TransitionManager.beginDelayedTransition(cl);

    cs2.applyTo(cl);

}

/**

* 变换成水平

*/

private void horizontal() {

TransitionManager.beginDelayedTransition(cl);

    cs1.applyTo(cl);

}

来看看效果:

水平变换成垂直 垂直变换成水平

两个布局的ConstraintLayout的必须一致,子控件的id也必须一致,否则对应不上。ConstraintLayout中的子控件必须都有id,否则会报java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSet异常。假如activity_main1.xml的按钮1删掉了,则变换过程中Button1位置和样式不会发生变化。

相关文章

网友评论

      本文标题:ConstraintLayout之ConstraintSet简记

      本文链接:https://www.haomeiwen.com/subject/teniprtx.html