TransitionManager
假设在beginDelayedTransition()
之后自动设置容器中的所有更改动画。执行此代码不会执行任何操作:
fooView.setScaleY(0);
TransitionManager.beginDelayedTransition(rootView);
fooView.setScaleY(1);
问题:为什么此代码无效?没有beginDelayedTransition
支持缩放动画吗?
修改:更精确的元素只是"跳跃"进入全尺度而没有过渡动画。这仅在缩放时发生,因为如果使用可见性或变换,则相同的工作正常。
答案 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
。