我有三个活动,它们的启动模式是单实例。 使用onfling(),我将它们左右摆动。

问题是,当我从右向左滑动时,幻灯片转换是可以的,但当我从左向右滑动时,我得到从右向左滑动的转换。

我知道为什么会发生这种情况,因为我总是发送新的意图。但是,现在我需要改变从左向右滑动的动画。

我知道有一个名为overridingTransitionPending()的方法,但我不知道如何在XML中定义我的动画。


当前回答

从右到左的幻灯片

res /动物/ in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="100%" android:toXDelta="0%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

res /动物/ out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

在Activity Java文件中:

Intent intent = new Intent(HomeActivity.this, ActivityCapture.class);
startActivity(intent);
overridePendingTransition(R.anim.in,R.anim.out);

您可以更改XML文件中的持续时间,以获得较长或较短的幻灯片动画。

其他回答

如果你的API级别是19级以上,你可以像上面那样使用翻译。 如果你的API级别低于19,你可以看看类似的教程:http://trickyandroid.com/fragments-translate-animation/

在res/anim/中使用这个xml

这是用于从左到右的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate android:fromXDelta="-100%" android:toXDelta="0%"
             android:fromYDelta="0%" android:toYDelta="0%"
             android:duration="700"/>
</set>

这是用于从右向左的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate
     android:fromXDelta="0%" android:toXDelta="100%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />
</set>

在你的代码中使用意图,比如从左到右:

this.overridePendingTransition(R.anim.animation_enter,
                   R.anim.animation_leave);

在你的编码中使用意图,比如从右向左

this.overridePendingTransition(R.anim.animation_leave,
                               R.anim.animation_enter);

从右到左的幻灯片

res /动物/ in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="100%" android:toXDelta="0%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

res /动物/ out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

在Activity Java文件中:

Intent intent = new Intent(HomeActivity.this, ActivityCapture.class);
startActivity(intent);
overridePendingTransition(R.anim.in,R.anim.out);

您可以更改XML文件中的持续时间,以获得较长或较短的幻灯片动画。

制作了一个示例代码,实现了从左、右、上、下滑动效果。 (对于那些不想制作所有这些anim xml文件的人:))

在github上签出代码

此外,你还可以这样做:

FirstClass.this.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

你不需要添加任何动画xml