Android ConstraintSet动画通过xml与编程实现
我正在使用ConstraintLayout处理一个复杂的UI,其中有多个视图/菜单(包含按钮、文本视图、小部件等)在不同的点击事件上从底部/屏幕外进行动画。每个菜单都有不同的约束和动画。现在我面临着多个问题Android ConstraintSet动画通过xml与编程实现,android,animation,android-xml,android-constraintlayout,Android,Animation,Android Xml,Android Constraintlayout,我正在使用ConstraintLayout处理一个复杂的UI,其中有多个视图/菜单(包含按钮、文本视图、小部件等)在不同的点击事件上从底部/屏幕外进行动画。每个菜单都有不同的约束和动画。现在我面临着多个问题 默认情况下,所有菜单都将隐藏/屏幕外。因此,设计/更新布局很困难,因为每次我需要首先处理菜单时,我必须更新其约束以及附加到它的所有视图的约束,以在LayoutEditor中显示。哪个比较麻烦 动画问题。所有这些视图都从屏幕底部设置动画。我发现了两种使用ConstraintLayout设置视图
val constraintSet1 = ConstraintSet()
onstraintSet1.clone(constraintLayout)
val constraintSet2 = ConstraintSet()
constraintSet2.clone(this, R.layout.activity_main_alt)
TransitionManager.beginDelayedTransition(constraintLayout)
val constraint = if (changed) constraintSet1 else constraintSet2
constraint.applyTo(constraintLayout)
这种方法的问题是我需要复制xml文件。因为我有10个视图需要从底部设置动画,所以我必须创建10个布局文件。另外,与编程相比,还有性能问题,因为动画开始时有一点延迟
另一种方法是通过编程设置约束来完成所有这些动画
ConstraintSet set = new ConstraintSet();
set.connect(R.id.myButton, ConstraintSet.BOTTOM,
ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0);
set.connect(R.id.myButton, ConstraintSet.RIGHT,
ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0);
set.constrainWidth(R.id.myButton, ConstraintSet.WRAP_CONTENT);
TransitionManager.beginDelayedTransition(constraintLayout)
set.applyTo(myLayout);
对于20到30个视图和菜单也很难设置。但我发现这种方法非常有效,因为我不需要复制xml文件,而且我发现它的性能更好,因为在这种情况下,动画以毫秒开始,没有任何延迟
在我的情况下,哪种方法是最好的实现方法?我有30多个视图要在单个平面约束布局文件中维护和设置动画