TransitionManager.beginDelayedTransition没有动画缩放功能

时间:2017-05-13 10:54:53

标签: android

TransitionManager假设在beginDelayedTransition()之后自动设置容器中的所有更改动画。执行此代码不会执行任何操作:

fooView.setScaleY(0);
TransitionManager.beginDelayedTransition(rootView);
fooView.setScaleY(1);

问题:为什么此代码无效?没有beginDelayedTransition支持缩放动画吗?

修改:更精确的元素只是"跳跃"进入全尺度而没有过渡动画。这仅在缩放时发生,因为如果使用可见性或变换,则相同的工作正常。

1 个答案:

答案 0 :(得分:2)

经过3天的实验,阅读,询问 - 我终于找到了解决方案并理解为什么。所以,简短回答是

TransitionManager.beginDelayedTransition(rootView, new Slide());
fooView.setVisibility(View.VISIBLE);

随着Material Design的引入和TransitionManager - Android处理事情本身应该如何完成。在我的情况下,我希望一个视图从底部滑动 - 所以我尝试使用scale模拟该功能并设置轴心点和visibility,但事实上它可以做得更简单。

长答案TransitionManager不支持缩放。如果您出于某种原因想要使用它 - 您必须编写自己的动画或使用第三方库。但是当Google创建Material Design时,他们希望您遵循新的模式 - 所以尽量忘记缩放比例,思考"改变边界"。

编辑:在信息 pskink 之后,您似乎可以实际设置缩放动画(使用ChangeTransform - https://developer.android.com/reference/android/transition/package-summary.html)。或者,对,你自己的Transition