冷启动视觉优化

  • 定义主题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">
        <item name="android:background">@drawable/drawable_splash</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:windowFullscreen">true</item>
    </style>

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

<!-- 防止欢迎页白屏或者黑屏,设置图片 -->
    <style name="SplashTheme" parent="AppTheme">

        <item name="android:background">@drawable/drawable_splash</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:windowFullscreen">true</item>

        <!--不让windowBackground延申到navigation bar区域-->
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
        <item name="android:windowTranslucentNavigation">true</item>

        <!--适配Android P刘海屏-->
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    </style>

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

<?xml version="1.0" encoding="utf-8"?>
<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">shortEdges</item>

代码中指定

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);
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值