Android 闪屏灰色过渡到 activity

Android splash screen gray transition to activity

我目前正在开发一个 Android 应用程序,我添加了一个在开头显示徽标的初始屏幕。

为了确保启动画面停留正确的时间,我使用了将主题应用到我的启动画面的方法 activity 然后,在相关的 Java class,我开始主activity(它有一个白色的背景,和启动画面一样)。初始屏幕正确显示并停留适当的时间,但是,当转换到主屏幕 activity 时,应用程序显示灰色屏幕大约 1 秒钟,然后显示完全加载的主屏幕 activity。你知道可能是什么问题吗?

这是我正在使用的 style.xml 文件中的代码:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/Trippy_primary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/Trippy_orange</item>
        <item name="android:textColorPrimary">@color/TrippyGray</item>
        <item name="android:colorBackground">@color/white</item>
        <item name="android:windowAnimationStyle">@null</item>
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/Trippy_primary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/Trippy_orange</item>
        <item name="android:textColorPrimary">@color/TrippyGray</item>
        <item name="android:windowBackground">@drawable/splash_screen</item>
        <item name="android:windowAnimationStyle">@null</item>
    </style>
</resources>

而这是清单文件中对应的 activity 标签:

<activity android:name=".SplashScreen" android:theme="@style/SplashTheme">
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

这是相关的 activity 代码:

public class SplashScreen extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        startActivity(new Intent(this, TrippyList.class).putExtra("comingActivity", false));

        finish();

    }

}

感谢您的帮助:)

试试这个对我有用。

 @Override
 protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);
        CountDownTimer countDownTimer;
        countDownTimer= new CountDownTimer(2500, 500) {

            public void onTick(long millisUntilFinished) {

            }
            public void onFinish() {

                startActivity(new Intent(SplashScreen.this, TrippyList.class));
                overridePendingTransition(0,0);
                finish();

            }
        }.start();
}

其实我发现了问题。我还在应用程序中实现了暗模式,当应用程序启动时处理正确模式检测的代码仍在主要 activity 中。在初始屏幕和主 activity 之间的交易中看到的背景较暗可能是因为我的 android 系统当前处于黑暗模式。

在启动画面中添加 dark/light 模式设置解决了这个问题。