活动过渡滑动进/出动画

时间:2013-11-04 23:19:25

标签: android animation android-activity android-xml

我知道这是互联网上的一些例子,而且 Stackoverflow 我发现了许多例子但不相信它们,它们都不能满足我的需求。 Even I have asked a similar question few time ago我再次陷入这个问题。基本上是相同的问题,但方向相反。我可以使用Activity B做任何我想要的动画,但这里的问题是Activity A,我可以在几个场景中制作动画。基本上ActivityA仅在此组合中播放enter_left

overridePendingTransition(R.anim.enter_from_right, R.anim.exit_on_left);

我想要做的是在Activity AstartActivity()上动画(移动)onBackPressed(),同时Activity B在屏幕上保持不动。 Activity A总是在顶部绘制(作为滑动菜单,我可以使用Activity B执行此操作)。 我真的认为上面的代码片段可以完成这项工作:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
                startActivityForResult(intent, 500);
                overridePendingTransition(R.anim.stay_still, R.anim.exit_on_left);

但这甚至不播放任何动画,而

//this is the animation for onBackPressed()
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        overridePendingTransition(R.anim.enter_from_left, 0);
    }

根据我的需要设置动画Activity A,但Activity B突然从屏幕上消失,我想留下来(设置(R.anim.enter_from_left, R.anim.stay_still)什么都不做。)

我准备了所有5个必要的动画:

enter_from_left

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

<translate
    android:duration="500"
    android:fromXDelta="-100%"
    android:toXDelta="0%" />
</set>

exit_on_left

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

<translate
    android:duration="500"
    android:fromXDelta="0%"
    android:toXDelta="-100%" />
</set>

enter_from_right

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="500"
        android:fromXDelta="100%"
        android:toXDelta="0%" />
   </set>

exit_on_right

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:toXDelta="100%" />
   </set>

stay_still

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="500"
        android:fromXDelta="0%"
        android:toXDelta="0%" />
</set>

我尝试了很多组合,但没有合作。你能告诉我这个动画是否可行,是否可以这样做? 我会发布一张图片,以便更清楚我想做什么:

所以,第一步:在startActivity()上,ActivityA应从左侧离开屏幕,在移动时,Activity B已经“在那里”,“在它下面”。

enter image description here

然后,onBackPressed() Acyivity B应该“返回”,从屏幕左侧进入并重叠保持不动的ActivityB

enter image description here

5 个答案:

答案 0 :(得分:0)

不确定您是否尝试过此组合,但应该可以使用.-

startActivityForResult(intent, 500);
overridePendingTransition(R.anim.enter_from_left, R.anim.stay_still);

答案 1 :(得分:0)

我可以发现下一个与片段fragmentTransaction.setCustomAnimations(R.anim.stay_still,R.anim.exit_on_left);一起工作非常好 虽然overridePendingTransition(R.anim.stay_still, R.anim.exit_on_left);不适用于活动。

另一方面反过来,

overridePendingTransition(R.anim.enter_from_left, 0);fragmentTransaction.setCustomAnimations(R.anim.enter_from_left, 0);

不能与片段的活动一起使用。最接近的方法是 transaction.setCustomAnimations(R.anim.stay_still,R.anim.exit_on_left, R.anim.enter_from_left,R.anim.exit_on_right);

如果有人有任何其他解决方案,我仍然等着听到它,我们将不胜感激。

答案 2 :(得分:0)

5年后,但是有一个解决方案。 这两个功能需要在活动中实现,这将覆盖默认过渡。

@Override
public void startActivity(Intent intent) {
    super.startActivity(intent);
    overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out);
}

@Override
public void startActivityForResult(Intent intent, int requestCode) {
    super.startActivityForResult(intent, requestCode);
    overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out);
}

from_right_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:interpolator="@android:interpolator/accelerate_decelerate" android:duration="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

from_left_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

答案 3 :(得分:0)

尝试一下

  1. 添加动画以进行活动进/出,例如意图调用

    startActivity(new Intent(this,toActivity));
    overridePendingTransition( R.anim.slide_in, R.anim.slide_out);
    
  2. 这是动画文件,请将其添加到anim文件夹中

    slide_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromYDelta="100%p" android:toYDelta="0%p"
        android:duration="300"/>
    

    slide_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@android:integer/config_longAnimTime"
        android:fromYDelta="0%p"
        android:toYDelta="100%p" />
    

谢谢

答案 4 :(得分:-1)

我不知道我是否真的理解你想要的东西,但是如果你想创建一个滑动菜单,你可以使用这个教程来实现它,它可以正常工作 - 它是解决问题的另一种方法 - :< / p>

http://developer.android.com/training/implementing-navigation/nav-drawer.html

但您必须使用FragmentActivity代替Activity。如果你想要一个例子,只需要它,我会发布它。祝好运。

相关问题