【问题标题】:Android - Cold Start - How to avoid white screen opening appAndroid - 冷启动 - 如何避免白屏打开应用程序
【发布时间】:2020-11-25 13:50:08
【问题描述】:

在应用程序的开发中,我遇到了这个问题,这个问题已经在许多其他帖子中讨论过,但没有给我任何解决方案。 特别是我正在实现一个自定义启动画面。这是自定义的,因为我不想将静态图像显示为启动画面而是动画。

特别是,我使用 Lottie 作为动画库,因此 "classic" way 在样式中创建主题并在超级等之前的 OnCreate 方法中调用它等等。我不需要它,我想直接进入SpashActivity。

问题是,如果没有两秒钟的白屏,我就无法启动应用程序。我不想改变颜色我只想避免它并直接进入 Splash 活动。有人有什么建议吗?我已经尝试了几种方法,我把其中的一些放在下面:

我尝试过但不起作用的方法:

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

在 AndroidXml 中添加以下内容

android:theme="@android:style/Theme.Translucent.NoTitleBar"

这样冻结我的屏幕:

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

【问题讨论】:

    标签: android android-layout splash-screen


    【解决方案1】:

    使用可绘制图像

     <style name="FullscreenTheme" parent="AppTheme">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@drawable/splash_screen</item>
    </style>
    

    在清单中

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

    【讨论】:

    • 这对我有什么帮助?
    • 嗨。请为您的答案添加一些解释,而不仅仅是发布代码。这将有助于其他人更好地理解。
    • @DoctorWho 我更新了我的答案,请尝试一下。它会起作用的。
    • 这不是避免白屏的方法。这就是经典飞溅的方式。你检查了我在我写的帖子中的链接吗?我不需要做任何水花,我只是想通过打开应用程序来消除白屏
    • 不可能。系统需要时间以毫秒为单位启动代码,这就是出现白屏的原因,在这毫秒时间内,您可以显示您的可绘制对象而不是白屏
    【解决方案2】:

    发生这种情况是因为 “冷启动”。 “冷启动” 是从代码初始化到 UI 响应用户所用的时间。它发生在诸如您的应用程序自设备启动后首次启动或系统终止应用程序以来的情况下。在此期间出现白色空白屏幕。 Android 操作系统首先检查 Manifest 是否有 Activity 的主题,如果存在则从 manifest 加载主题,否则加载 Activity 的 UI。

    如何摆脱这个白色的空白屏幕?

    为清单中的启动活动添加主题。

    这里解释的很好,关注同一个博客

    https://medium.com/@shishirthedev/the-right-way-to-implement-a-splash-screen-in-android-acae0e52949a

    【讨论】:

    • 如果您点击我帖子中的链接,您可以更好地管理启动画面。所以,我需要避免它不能用旧的方式来代替。对不起,不要帮助我
    【解决方案3】:

    尝试将其添加到样式.xml 中的 AppTheme

     <item name="android:windowBackground">@android:color/transparent</item>
     <item name="android:colorBackgroundCacheHint">@null</item>
    

    这是styles.xml (themes.xml)的完整代码

    <resources>
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
    
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:colorBackgroundCacheHint">@null</item>
        </style>
    </resources>
    

    【讨论】:

    • 使用黑屏但不能避免冷启动
    【解决方案4】:

    你只需要drawablelayer-list 和主题 &lt;item name="android:windowBackground"&gt;@drawable/your_drawable&lt;/item&gt; 并且不要使用 setContentView 保留窗口背景。

    【讨论】:

    • 没有。我不需要它。因为我不想使用静态闪屏。我需要使用 Lottie,我需要使用动画,并且只避免白屏、冷启动或任何此启动的名称
    • @DoctorWho 冷启动不可能使用动画
    • 完全正确。正是出于这个原因,我想了解如何避免出现这两秒钟的白屏,然后切换到我的活动,可以在其中放置任何动画
    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2021-11-06
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多