Android闪屏页适配

Android闪屏页适配

首先,为了避免第一次打开出现白屏,所以应该自定义style,添加anroid:windowBackground属性。此属性下放了一张1080*1920的闪屏图片,会出现在不同尺寸的屏幕上闪屏图片被压缩的情况。
于是,我的解决方法是:把闪屏图片上的元素分开来,在drawable下新建一个由闪屏元素组成的layer-list。splash.xml如下图:


<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorPrimary"/>
    
    <item
        android:gravity="center_horizontal"
        android:top="86dp">
        <bitmap
            android:gravity="top"
            android:src="@mipmap/splash_logo"
            />
    item>
    
    <item
        android:gravity="center_horizontal"
        android:top="330dp">
        <bitmap
            android:gravity="top"
            android:src="@mipmap/splash_center_image"/>
    item>
    
    <item
        android:gravity="center_horizontal|bottom"
        android:bottom="23dp">
        <bitmap
            android:gravity="bottom"
            android:src="@mipmap/splash_botton_copyright"/>
    item>
layer-list>

这样放在三个不同尺寸屏幕上,都没有出现压缩问题。
然而却出现了,在有的带有底部虚拟键的手机上,会导致闪屏底部文字图片被遮挡,显示不出来。
于是需要在style中再添加一个属性:android:windowDrawsSystemBarBackgrounds为false。style所需要的属性见下图:

<style name="SplashFullTheme" parent="Theme.AppCompat.Light.NoActionBar">
        "android:windowFullscreen">true
        "android:windowDrawsSystemBarBackgrounds">false
        "android:windowBackground">@drawable/splash
    style>

若项目中有设置状态栏的需求,一般都设置在BaseActivity中,注意闪屏activity不能有window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

你可能感兴趣的:(遇到的问题)