Android应用启动白屏处理的方法是什么

本篇内容介绍了“Android应用启动白屏处理的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    正文

    相信大家一定遇到过某些App在手机桌面打开时会出现短暂或者几秒钟的白屏情况吧,没错那是应用程序启动后系统默认的背景色,此时应用的第一个Activity还未被加载出来,所以不管怎么设置第一个Activity的背景色都毫无作用。首先先聊一聊冷启动和热启动:

    • 冷启动

    杀掉App,此时的App进程不存在于后台,启动时从Logo页面开始。

    • 热启动

    App处于后台,进程未被杀死,重新进入前台时页面保持上一次页面,不会重新启动。

    所以,我们此次所讲的属于冷启动过程,当应用程序代码量小、业务逻辑少、体积小时,App启动还是比较快,白屏时间可以忽略不计。一旦初始化工具过多,首页业务逻辑过多时启动速度会严重变慢,此时的白屏时间会越来越长,给人一种极差的体验。我们需要做的就是在白屏时间尽可能快速的展示Logo等图标,让它成为一个过渡,待应用程序准备好后跳转到相应页面以提高用户体验。

    配置一个SplashActivity

    首先,需要配置一个SplashActivity(应用展示的第一个Activity)的主题

    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 将splash图片设置在这,这样这张图片取代白屏 -->
        <item name="android:windowBackground">@drawable/logo_drawable</item>
        <item name="android:windowAnimationStyle">@style/notAnimation</item>
        <!--将顶部状态栏设置为透明,并将界面内容布局上边界上提至状态栏顶部-->
        <item name="android:windowTranslucentStatus">true</item>
        <!--如果有底部虚拟导航栏,则将底部虚拟导航栏设置为透明,并将界面内容布局下边界下沉至虚拟导航栏底部-->
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">true</item>
    </style>

    其中windowBackground是我们本次重点配置,windowAnimationStyle是取消页面的一些动画效果,一般首页我们让它无动画,其他设置根据自己情况设置即可。

    让我们来看看logo_drawable

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <color android:color="#ffffffff"/>
        </item>
        <item
            android:top="208dp"
            android:bottom="453dp">
            <bitmap
                android:gravity="center"
                android:src="@mipmap/ic_logo" />
        </item>
    </layer-list>

    白色背景上叠加一个bitmap,这里需要注意的是bitmap外层的item标签一定要根据设计稿配置好上下边距,否则运行App后的效果会被铺满屏幕。

    然后我们将上面的主题配置到activity中,此时SplashActivity的布局文件中可以什么都不写,因为该主题就相当于背景,如果此处编写页面可能会和背景logo重合,仅需要编写一些逻辑和跳转处理。

    <activity
        android:name=".ui.splash.SplashActivity"
        android:configChanges="orientation|screenSize"
        android:exported="true"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    至此,再次运行打开App发现,几乎点开就是我们配置的logo,完美处理白屏问题。

    注意:

    如果项目使用了UI适配的三方库,例如androidAutoSize,一定记得根据文档处理放弃启动页适配,否则运行出来的效果也是不如意。

    “Android应用启动白屏处理的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程之家网站,小编将为大家输出更多高质量的实用文章!

    相关文章

    Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
    Android实现自定义带文字和图片的Button 在Android开发中经常...
    Android 关于长按back键退出应用程序的实现最近在做一个Andr...
    android自带的时间选择器只能精确到分,但是对于某些应用要求...