2014-03-03 77 views
0

我有3个活动,A,B,C嵌套滑动活动

从他们浏览到B,所以我想将向左滑动,并从右侧B中。 当他们从B导航回A时,我想将B滑出右侧,A从左侧滑入。

所以感觉像他们对面3个面板侧滚动并排这样的:

enter image description here

我试图做到这一点的风格:

<style name="MyAnimation.WindowFromRight" parent="@android:style/Animation.Dialog"> 
    <item name="android:windowEnterAnimation">@anim/slide_in_left</item> 
    <item name="android:windowExitAnimation">@anim/slide_out_right</item> 
</style> 

<style name="MyAnimation.WindowFromLeft" parent="@android:style/Animation.Dialog"> 
    <item name="android:windowEnterAnimation">@anim/slide_in_right</item> 
    <item name="android:windowExitAnimation">@anim/slide_out_left</item> 
</style> 

<style name="ThemeFromLeft" parent="AppBaseTheme"> 
    <item name="android:windowAnimationStyle">@style/MyAnimation.WindowFromLeft</item> 
</style> 

<style name="ThemeFromRight" parent="AppBaseTheme"> 
    <item name="android:windowAnimationStyle">@style/MyAnimation.WindowFromRight</item> 
</style> 

然而, B的规则很复杂,所以它不适合上面的任何风格。当B被带入时,B向左滑动,当A被带入时向右滑出,反之亦然,因为当B进入视野时。

我试过overridePendingTransition来应付特殊情况,但似乎冲突和动画似乎是复杂的,应该是这样吗?

所以我的问题是,这可以通过样式来实现吗?

回答

1

如果我理解正确,我认为你最好使用ViewPager,并将3个活动转换为3个片段。但是,如果你的应用程序需要这3个活动出于某种原因,你可以通过调用overridePendingTransition(int,int)来实现你想要的。

请注意,第一个int是用于输入动画的预定义xml动画的资源ID,第二个int是用于退出动画的资源ID。在你的情况下,你需要创建一个4个动画文件(两个用于输入,另外两个用于退出),并在每个活动中使用适当的文件。你可以看看Android Left to Right slide animation

+0

谢谢,'ViewPager'是一个很好的建议。不幸的是,其中两项活动来自第三方图书馆。 – weston

+0

然后最好的方法是在适当的地方调用overridePendingTransition。 – k3v1n4ud3