8

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

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

我正在启动一项新活动,在该活动中显示 Web 视图。我调用了 overridePendingTransition 以便在切换到新活动时获得我想要的动画,它工作正常(至少,动画部分工作正常)。但是,有几件事会影响效果。

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

触发新活动后,旧活动立即被隐藏,取而代之的是黑色,因此看起来 web 视图在黑色上滑动。我想让它把之前的活动留在后台而不是隐藏它,所以 webview 会滑过它。这可能吗?

谢谢!

4

5 回答 5

11

我来这里是为了寻找同样的东西,但目前的答案没有帮助。我希望这会有所帮助,在提出问题四个月后!

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

  • 仅当 exitAnim 为 0 时才会发生,
  • 它只发生在“翻译”元素上。'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 机制在 100 秒内将其从 alpha 1 淡化到 alpha 1 来强制传出活动保持可见 - 换句话说,只需使其完全可见。

解决方法并不完全完美。例如,如果您的新 Activity 是从 Dialog 调用的,则 Dialog 看起来好像在 Activity 滑入到位时被关闭 - 但在关闭该 Activity 后它会再次返回。

于 2012-11-02T16:01:44.473 回答
2

我有一个类似的问题,即使用 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);

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

于 2015-05-07T13:20:05.390 回答
1

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

于 2012-06-25T19:57:12.270 回答
1

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

看看这个

于 2012-06-25T19:40:01.717 回答
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>
于 2014-10-06T20:19:52.900 回答