美文网首页
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