活动之间的滑动动画

3

我需要实现在两个活动之间的简单动画:我已经实现了一些简单的动画,但最后一个有点难以实现。

动画应该像这样:活动A(在屏幕上)从YDelta = 0滑动到Ydelta = -100%。同时,活动B已经处于其最终位置(它不移动,无需平移…)并且慢慢显示……就像窗帘一样……

我曾尝试过以下错误的方法:

overridePendingTransition(R.anim.no_anim, R.anim.slide_to_top);

无动画:

<translate android:fromYDelta="0" android:toYDelta="0" android:duration="2000"/> 

slide_to_top:

 <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="2000"/> 

结果不正确:Activity B(绑定到no_anim)立即显示在屏幕上,因此Activity A会消失……我该如何解决这个问题?谢谢和最好的祝福!
2个回答

2

我之前遇到了类似的问题,后来发现(就像css中的z-order),在动画中有一个非常好的参数:android:zAdjustment"允许在动画期间调整正在被动画处理的内容的Z顺序"。你可以在上一个活动后面显示下一个活动。你有三个可能的值:

  • normal:默认值等于0
  • bottom:显示在-1;值在下面
  • top:1的值;显示在顶部

因此,slide_to_top.xml

<translate 
    android:zAdjustment="top"
    android:fromYDelta="0"
    android:toYDelta="100%p"
    android:duration="2000" />  

此外,您无需设置no_anim动画,因为您的下一个活动将具有默认值0,而您的上一个活动将具有+1。我已经测试过了,真的很好用!然后,看一下这个方法:

overridePendingTransition(0,R.anim.slide_to_top);  

我真的希望你找到了解决这个问题的方法。然而,这个解决方案可能会帮助那些想要与你相同行为的人。


0

谢谢您的快速回复:但是在您的示例中,两个活动都从一个方向移动到另一个方向。而在我的情况下,只有退出活动有真正的动画(它从Ydelta = 0移动到YDelta = -100p),而B活动没有移动!它已经处于最终位置,并且缓慢显示。我不希望它从屏幕底部出现。就像窗帘一样! - Adriano Bellavita
你可以使用ydelta代替xdelta,在方法overridependingtransition中,你只需要提供你想要动画的唯一视图的过渡。 - An-droid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接