android 我怎样才能消除出现在启动画面之前的白色?

a0zr77ik  于 2023-02-10  发布在  Android
关注(0)|答案(6)|浏览(174)

当打开java文件时,我首先会看到空白的白色屏幕,之后它会出现我的启动画面布局。

new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //Task 
                    finish();
                }
              }, ARG_SPLASH_TIME);

xml文件中,我简单地输入ImageView并设置android:src值。在manifest文件中,我以启动器模式打开Splash活动。

mzillmmw

mzillmmw1#

终于得到了我的答案**Splash Screen in Right Way**。我只是跟着做。
在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"中添加了闪屏样式

wswtfjt7

wswtfjt72#

白色屏幕是Android让系统对用户React更灵敏的一种方式。用户点击应用程序,立即看到结果(应用程序)。
那么我们怎样才能改变这种行为呢?
我们可以禁用此预览,如@Piyush所写:

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

然而,这会让你的应用程序感觉迟钝,我的意思是,你不会看到任何东西一段时间,然后你会看到你的活动,而不是一个真正的结果,你会期望发生。
更好的选择是在您的活动样式中使用。

<item name="android:windowBackground">@drawable/bg</item>

这将改变你的应用程序的默认背景,你可以把一个应用程序的预加载图像,例如与您的标志。
两种情况下的用户都必须等待,但这感觉响应更快

x8goxv8g

x8goxv8g3#

用途:

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

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

2vuwiymt

2vuwiymt4#

这是一个奇怪的问题与新发布的Android Studio。第一次启动应用程序需要比平常更长的时间(看起来白色)。这个问题只发生在调试模式,不影响您发布的APK。我也遭受这个问题,并找到了这个解决方案。
设置/首选项→构建、执行、部署→ Instant Run并取消选中Instant Run
Instant run in Android Studio 2.0 (how to turn off)

xiozqbni

xiozqbni5#

你可以在你的泼水活动中使用这种风格-

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

lndjwyie6#

一些答案现在不工作,所以我更新这个,并确保它的wotk罚款。首先创建您的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>

在您的清单中:

<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>

你不需要布局文件,它不是没有必要,删除setContentView在你的类,像这样:

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)

    }
}

相关问题