Android动画布局和视图

时间:2020-03-29 22:10:11

标签: java android animation view

我有一个ConstraintLayout,其底部具有导航功能,而一个片段容器占据了屏幕的其余部分。我想要的是以编程方式在导航和带有动画的片段容器之间添加/删除视图。

我具有以下代码来添加新视图并为其设置动画:

//Adding the view to the main layout
ConstraintLayout layout = findViewById(R.id.ConstraintLayout);
getLayoutInflater().inflate(R.layout.newView, layout);

//Start animation immediately with a library
YoYo.with(Techniques.SlideInUp).duration(800).playOn(findViewById(R.id.newView));

现在,上面的代码对我而言并不可靠。我想找到一种更好的方法,但目前可以。

添加新视图后,我将片段容器的约束从导航顶部更改为新视图顶部。片段容器的大小设置为match_constrainst,因此通过更改约束,它现在会更小一些。

    ConstraintSet constraintSet = new ConstraintSet();
    constraintSet.clone(layout);
    constraintSet.connect(R.id.fragment_container,ConstraintSet.BOTTOM,R.id.newViewWrapper,ConstraintSet.TOP,0);
    constraintSet.applyTo(layout);

我没办法做的就是动画化片段容器的大小变化。总的来说,我从来没有在android中使用动画。

在android中是否有更好的方法或最佳做法来对视图和布局进行动画处理?

1 个答案:

答案 0 :(得分:1)

如果您使用Constraintlayout,则可以将TransitionManager用于布局动画。基本设置如下:

TransitionManager.beginDelayedTransition(layout);

例如,当您更改视图/约束的大小时,它将自动为布局设置动画。

要更改约束,可以使用ConstraintSet

相关问题