Android 如何删除在启动屏幕之前出现的白色屏幕?

Android 如何删除在启动屏幕之前出现的白色屏幕?,android,performance,android-layout,splash-screen,Android,Performance,Android Layout,Splash Screen,在打开java文件时,我首先看到一个空白的白色屏幕,然后它显示我的初始屏幕布局。我的java文件是: new Handler().postDelayed(new Runnable() { @Override public void run() { //Task finish(); } }, A

在打开java文件时,我首先看到一个空白的白色屏幕,然后它显示我的初始屏幕布局。我的java文件是:

new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //Task 
                    finish();
                }
              }, ARG_SPLASH_TIME);
xml
文件中,我只需放入
ImageView
并设置
android:src
值。 在
清单
文件中,我以启动程序模式打开启动活动。

使用:

<item name="android:windowDisablePreview">true</item>
true

在应用程序主题的
style.xml
文件中。

对于新发布的Android Studio,这是一个奇怪的问题。首次启动应用程序的时间比平常长(看起来是白色的)。此问题仅在调试模式下发生,不会影响已发布的APK。我也经历了这个问题,找到了解决办法

设置/首选项→ 构建、执行、部署→ 即时跑步和取消选中即时跑步


您可以在飞溅活动中使用此样式-

<style name="YourTheme">
  <item name="android:windowBackground">@null</item>
</style>

@空的

对于android来说,白色屏幕是一种让系统感觉对用户更敏感的方式。用户轻触应用程序并立即看到结果(应用程序)

那么我们怎样才能改变这种行为呢

我们可以禁用此预览,正如@Piyush所写:

<item name="android:windowDisablePreview">true</item>
true
这会让你的应用程序感觉迟钝,我的意思是,你会在一段时间内看不到任何东西,然后你会看到你的活动,而不是你预期的结果

更好的选择是在活动样式中使用

<item name="android:windowBackground">@drawable/bg</item>
@drawable/bg
这将更改应用程序的默认背景,您可以为应用程序放置预加载图像,例如带有徽标的图像


在这两种情况下,用户都必须等待,但这让人感觉反应更灵敏

最终得到了我的答案。我只是跟着

在values->styles.xml中,我创建了闪屏背景图像

<style name="AppTheme.Splash" parent="AppTheme.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
</style>

@可牵引/飞溅
对于下面的api 19,在values-19->styles.xml中我使用了

<style name="AppTheme.Splash" parent="AppTheme.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

@可牵引/飞溅
真的
真的

我从SplashActivity中删除了
setContentview()
,并在
Manifest.xml
文件
android:theme=“@style/AppTheme.splash”
中添加了启动屏幕的样式,一些答案现在不起作用,所以我更新了它并确保它正常。第一步是创建xml启动文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/black" />

    <item
        android:width="@dimen/_145sdp"
        android:height="@dimen/_30sdp"
        android:drawable="@drawable/your_logo_here"
        android:gravity="center" />
</layer-list>

虽然它可以工作,但在延迟2-3秒后会显示飞溅,这有时会影响用户体验。
<activity
            android:name=".ui.SplashActivity"
            android:theme="@style/Theme.Splash">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<style name="Theme.Splash" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_screen</item>
<!--        <item name="android:windowNoTitle">true</item>-->
<!--        <item name="android:windowActionBar">false</item>-->
<!--        <item name="android:windowFullscreen">true</item>-->
<!--        <item name="android:windowContentOverlay">@null</item>-->
    </style>
class SplashActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setUpView()
    }


    private fun setUpView() {
        Handler(Looper.getMainLooper()).postDelayed({
            val intent = Intent(this, MainActivity::class.java)
            //startActivity(intent)
            // finishAffinity()
        }, 2000)

    }
}