在活动之间切换:不要隐藏以前的活动

时间:2012-06-25 19:23:12

标签: android animation android-activity

这里有一个相当直截了当的问题,但我似乎找不到已经问过这个问题的人了。很可能没有使用正确的关键字。

无论如何,这是我的情景:

我正在启动一项新活动,其中我展示了一个网络视图。我调用了overridePendingTransition以便在切换到新活动时获得我想要的动画,这很好(至少,动画部分工作正常)。但是,有一些事情会影响效果。

我想要的是让webview从底部滑过上一个活动,当用户按下时,它应该向下滑出网站。第二部分就像一个魅力,但第一部分并不完全是我想要的。

在触发新活动时,旧活动会立即被隐藏,并且在其位置是黑色,因此看起来webview滑过黑色。我想让它在后台留下以前的活动,而不是隐藏它,所以webview滑过它。这可能吗?

谢谢!

5 个答案:

答案 0 :(得分:11)

我来这里寻找同样的事情,但目前的答案没有帮助。我希望这会有所帮助,就在提出问题四个月之后!

在我看来,这是由于Android平台中的一个错误,因为:

  • 只有在exitAnim为0时才会发生
  • 它只发生在'translate'元素中。 'alpha'元素(淡入淡出,淡出)工作正常。

以下是我的解决方法:

@Override
protected void onResume() {
    overridePendingTransition(R.anim.mu_slide_in_left, R.anim.mu_no_anim);
    super.onResume();
}

@Override
protected void onPause() {
    overridePendingTransition(0, R.anim.mu_slide_out_right);
    super.onPause();
}

mu_no_anim.xml

的位置
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="1.0" android:toAlpha="1.0" android:duration="100000" />

因此,通过指定可靠的alpha机制将其从alpha 1淡化为alpha 1超过100秒,这迫使外出活动保持可见 - 换句话说,只是让它完全可见。

解决方法并不完美。例如,如果从对话框中调用了新的活动,则对话框看起来好像在活动滑动到位时被解除 - 但在关闭该活动后它将再次返回。

答案 1 :(得分:1)

它可能很慢,但您是否尝试过为活动使用不同的主题?

检查 this

答案 2 :(得分:1)

创建实现所需效果的自定义过渡动画XML资源文件,并在开始下一个Activity之前调用Activity.overridePendingTransition。

答案 3 :(得分:1)

您可以在输入活动的主题中添加一个属性,使窗口保持半透明状态,而不是使用延迟退出动画。这样您就可以看到之前的活动。

<style name="EnteringActivity.Theme" parent="@android:style/Theme.Holo.Light">
    [...]
    <item name="android:windowIsTranslucent">true</item>
    [...]
</style>

注意:如果您要创建对话活动,则还需要活动主题中的以下属性:

<item name="android:windowBackground">@color/transparent</item>

答案 4 :(得分:1)

我遇到了类似的问题,即使用overridependingtransition在从一个活动到另一个活动的滑动过渡中出现黑屏。 我按照下面的方式工作

1)在anim文件夹中创建了一个noanim.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="0%p" />

并使用

overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);

第一个参数作为我的原始动画,第二个参数是退出动画作为我的虚拟动画