冷启动视觉优化

文章目录

        • 指定刘海屏显示模式

  • 定义主题theme
  • theme配置相关属性
  • 支持延伸到刘海屏&沉浸式布局
  • drawable设计为layer-list方式

AndroidManifest定义theme

	 <activity
  			android:name=".modules.welcome.SplashActivity"
            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>

drawable文件夹的style.xml


    <style name="SplashTheme" parent="AppTheme">
        "android:background">@drawable/drawable_splash
        "windowNoTitle">true
        "android:windowAnimationStyle">@null
        "android:windowFullscreen">true
    style>

drawable-v28下的style.xml
用于兼容Android 9的刘海屏


    <style name="SplashTheme" parent="AppTheme">

        "android:background">@drawable/drawable_splash
        "windowNoTitle">true
        "android:windowAnimationStyle">@null
        "android:windowFullscreen">true

        
        "android:windowDrawsSystemBarBackgrounds">false
        "android:windowTranslucentNavigation">true

        
        "android:windowLayoutInDisplayCutoutMode">shortEdges
    style>

drawable_splash.xml
定义冷启动的背景,为了适配,采用layer-list


<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/common_white_color" />
    item>
    <item android:bottom="175dp">
        <bitmap
            android:gravity="center_vertical|left"
            android:src="@drawable/pic_splash_icon" />
    item>

    <item android:bottom="50dp">
        <bitmap
            android:gravity="center_horizontal|bottom"
            android:src="@drawable/pic_splash_logo" />
    item>
layer-list>

指定刘海屏显示模式

Google 为刘海屏显示方式提供了三种显示模式:

// 默认情况,全屏页面不可用刘海区域,非全屏页面可以进行使用
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT = 0;
// 允许页面延伸到刘海区域
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES = 1;
// 不允许使用刘海区域
public static final int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER = 2;

style.xml 中配置theme属性

<item name="android:windowLayoutInDisplayCutoutMode">shortEdgesitem>

代码中指定

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
            getWindow().setAttributes(lp);
 }

你可能感兴趣的:(android实践)