2014-03-03 149 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