首页 > 解决方案 > 两个 Android 活动之间的转换未按预期运行

问题描述

ActivityA我在两个活动和之间设置了一些转换ActivityB,但它们的行为不如预期。Android API 为 22(5.0 Lollipop)。使用了活动之间的缓慢转换,因为两个活动都有 web 视图,它们的布局需要几秒钟才能稳定。

ActivityA是一个NativeActivity并且有两种方法用于在从 C++ 代码调用的活动之间进行切换。

class ActivityA extends NativeActivity
{
    ...
    protected void startActivityA()
    {
        startActivity(getApplicationContext(), ActivityA.class);
        overridePendingTransitions(R.anim.slow_fade_in, R.anim.slow_fade_out);
    }

    protected void startActivityB()
    {
        startActivity(getApplicationContext(), ActivityB.class);
        overridePendingTransitions(R.anim.slow_fade_in, R.anim.slow_fade_out);
    }
    ...
}

ActivityB是一个Activity

res/anim/show_fade_in.xml过渡是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:factor="1.0"
        android:fillAfter="true"
        android:fillBefore="true" android:fillEnabled="true"
        android:duration="5000" />
</set>

res/anim/slow_fade_out.xml过渡是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromAlpha="1.0" android:toAlpha="0.0"
        android:factor="1.0"
        android:fillAfter="true"
        android:fillBefore="true" android:fillEnabled="true"
        android:duration="5000" />
</set>

ActivityA.startActivityB()从 C++ 代码调用时,我注意到发生了两件事:

  1. 慢慢淡化为浅灰色ActivityA
  2. ActivityB稳定的webview突然出现。

我不明白为什么#2 是突然出现而不是缓慢消失。

ActivityA.startActivityA()从 C++ 代码调用时,我所看到的只是ActivityBActivityA. 我不明白为什么我得到一个快速的交叉淡入淡出而不是编程的缓慢淡入淡出。

为什么我可能得不到预期的结果?

标签: androidtransitionsandroid-transitions

解决方案


推荐阅读