Android 动画布局和视图
Posted
技术标签:
【中文标题】Android 动画布局和视图【英文标题】:Android animate layouts and views 【发布时间】:2020-03-29 22:10:11 【问题描述】:我有一个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】:如果您使用Constraintlayout
,则您可以使用TransitionManager
进行布局动画。基本设置是这样的:
TransitionManager.beginDelayedTransition(layout);
一旦您更改视图/约束的大小,它将自动为布局设置动画。
要更改约束,您可以使用ConstraintSet
。
【讨论】:
我知道如何更改约束,但我不知道有一个TransitionManager
。我会试试的。以上是关于Android 动画布局和视图的主要内容,如果未能解决你的问题,请参考以下文章
在Android上为Constraint布局更改设置动画的最佳方式