问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Android应用启动页白屏快速优化方案

创作时间:
作者:
@小白创作中心

Android应用启动页白屏快速优化方案

引用
CSDN
1.
https://blog.csdn.net/2401_86391773/article/details/141901194

Android应用在低端机型上启动时经常会出现白屏现象,这主要是因为在创建进程和初始化应用的过程中耗时较长,导致启动页布局显示延迟。本文将介绍一个简单有效的解决方案,通过设置window背景来快速解决这一问题。

1. 问题背景

在开发过程中,我们可能会发现即使是轻量级的应用,在低端机型上也会出现启动页白屏现象。这种现象主要是因为在应用启动时,系统需要加载一个空白窗口,创建进程,初始化应用,最后才加载启动页布局。如果在创建进程和初始化应用的过程中耗时较长,用户就会看到空白窗口,即白屏现象。

2. 解决方案

2.1 基本思路

通过给Activity指定带有window背景的theme来避免白屏。这种方法的优点是能够快速解决问题,缺点是可能会引起背景图拉伸问题。

2.2 具体实现

2.2.1 创建主题样式

styles.xml文件中创建一个新的主题样式,继承自Theme.AppCompat.DayNight.NoActionBar,并设置android:windowBackground属性为启动页的背景图。

<style name="Theme.Splash" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowBackground">@drawable/bg_splash_snow</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
</style>

2.2.2 配置AndroidManifest.xml

AndroidManifest.xml文件中,将启动页Activity的主题设置为刚刚创建的主题。

<activity android:name=".SplashActivity"
    android:theme="@style/Theme.Splash">
</activity>

2.2.3 Activity代码

在启动页Activity的onCreate方法中,将window的背景图置空,以避免重复显示背景图。

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        window.setBackgroundDrawable(null)
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)
    }
}

2.2.4 布局文件

在启动页的布局文件中,设置背景为透明,并添加必要的UI元素。

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.SplashActivity">

    <androidx.appcompat.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:text="@string/app_name"
        android:textColor="@color/white"
        android:textSize="22sp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

2.3 效果展示

通过上述步骤,可以有效避免启动页白屏现象。以下是优化前后的对比效果:

优化后的效果显示,启动页能够快速显示背景图,避免了白屏现象,提升了用户体验。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号