12

我有 2 个活动,我想在这两个活动之间创建一个动画过渡,这样两个活动的视图都会向上滑动,就好像第二个活动正在向上推动第一个活动一样。在我的第一个活动中,我使用:

Intent iSecondActivity = new Intent(FirstActivity.this,SecondActivity.class);
FirstActivity.this.startActivity(iSecondActivity);
FirstActivity.this.overridePendingTransition(R.anim.slide, R.anim.slide2);

我的 slide.xml 看起来像:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <translate
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromYDelta="0"
        android:toYDelta="-100%p"
        android:duration="2000"
    />
</set>

我的 slide2.xml 看起来像:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <translate
         android:interpolator="@android:anim/decelerate_interpolator"
         android:fromYDelta="100%p"
         android:toYDelta="0"
         android:duration="2000"
    />
</set>

但是,问题是当调用“startActivity”时,第二个活动的视图已经呈现,而过渡刚刚开始滑动。我想看到第一个活动的视图向上滑动......但我看到第二个活动的视图(呈现在第一个活动的视图上)向上滑动。

第二个问题是我看到替换视图是第一个活动的视图。我希望替换视图成为第二个向上推动的活动视图。

很难解释,所以如果我能更详细地解释一下,请告诉我。对任何混淆表示歉意,并感谢您阅读本文。

PS我正在使用textviews ...我想渲染太快了?我也在使用摩托罗拉 Razr,但这并不重要。

4

2 回答 2

10

没关系,这是一个愚蠢的错误——我不明白文档中“进入动画”与“退出动画”的含义。我需要通过更改来交换 xml:

FirstActivity.this.overridePendingTransition(R.anim.slide, R.anim.slide2);

进入

FirstActivity.this.overridePendingTransition(R.anim.slide2, R.anim.slide);
于 2012-04-12T23:31:45.370 回答
6

只需将这些添加到您的 slide2.xml 中:

android:startOffset="2000"

这样,第二个活动的动画只会在您的第一个活动的动画完成后立即开始。

于 2012-04-12T06:24:39.797 回答