ConstraintLayout+ConstraintSet实现动画效果

一.简介

 

   大家都可能已经知道 ConstraintLayout 和 ConstraintSet 在 Android 布局方面的强大功能。其实这些 API 也可以帮助大家轻易的实现复杂的动画。只要为您的动画指定开头和结尾的两个关键帧,就可以用极少量的代码 (仅需四行) 为复杂的场景创建流畅的动画。把适量的动画整合在您的 app 里能更吸引用户并提高他们的参与度。






 

二.代码实现

 

<1> 添加配置

implementation 'com.android.support.constraint:constraint-layout:1.1.0'





<2> 布局文件(切换的两个布局)


(1) activity_main.xml布局




    

 


(2) activity_mains.xml布局
 




    


注意:切换的两个布局id要对应的一样才可以




<3> 代码使用

public class MainActivity extends AppCompatActivity {


    private ConstraintSet firstconstraintSet;
    private ConstraintSet secondconstraintSet;
    private ConstraintLayout constraintLayout;
    private Button start;
    boolean flag = true;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        firstconstraintSet = new ConstraintSet();
        secondconstraintSet = new ConstraintSet();

        constraintLayout = findViewById(R.id.activity_main_constraintlayout);
        start = findViewById(R.id.start);


        firstconstraintSet.clone(constraintLayout);
        secondconstraintSet.clone(this, R.layout.activity_mains);
        start.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void onClick(View view) {
                if (flag) {
                    flag = false;
                    TransitionManager.beginDelayedTransition(constraintLayout);// 动画效果
                    secondconstraintSet.applyTo(constraintLayout);
                } else {
                    flag = true;
                    TransitionManager.beginDelayedTransition(constraintLayout);
                    firstconstraintSet.applyTo(constraintLayout);
                }
            }
        });
    }

}

 

 

 

 

<4> 效果图

 

ConstraintLayout+ConstraintSet实现动画效果_第1张图片

ConstraintLayout+ConstraintSet实现动画效果_第2张图片

 

 

 

附:ConstraintLayout官方文档:
https://developer.android.google.cn/reference/android/support/constraint/ConstraintLayout

你可能感兴趣的:(Android)