android 全屏加载页和沉浸式

1、加载页

基础款 在普通的style里写

!--全屏主题-->
    <style name="AppTheme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowDisablePreview">false</item>
        <item name="android:windowBackground">@drawable/layer_launcher</item>
    </style>

AndroidManifest中使用

<activity
    android:name=".main.WelcomeActivity"
    android:theme="@style/AppTheme.Splash"
    tools:ignore="LockedOrientationActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

这样加载的时候基础屏就可以全屏安排了  

由于粪叉出来刘海屏,国内厂家山出刘海屏和水滴屏之后 ,畸形屏在上述写法中上面状态栏变成了黑的那我们得继续适配

style-v28中

<style name="AppTheme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <!-- 设置window过度效果 禁用窗口的预览动画 -->
        <item name="android:windowDisablePreview">false</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
        <item name="android:windowBackground">@drawable/layer_launcher</item>

    </style>

style-v21中

<style name="AppTheme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <!-- 设置window过度效果 禁用窗口的预览动画 -->
        <item name="android:windowDisablePreview">false</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
        <item name="android:windowBackground">@drawable/layer_launcher</item>
    </style>

AndroidManifest中使用时有的大佬加了一些东西

 <activity
            android:name=".main.WelcomeActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.Splash"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!--允许绘制到oppo、vivo刘海屏机型的刘海区域 -->
            <meta-data
                android:name="android.max_aspect"
                android:value="2.2" />

            <!-- 允许绘制到华为刘海屏机型的刘海区域 -->
            <meta-data
                android:name="android.notch_support"
                android:value="true" />

            <!-- 允许绘制到小米刘海屏机型的刘海区域 -->
            <meta-data
                android:name="notch.config"
                android:value="portrait" />
        </activity>

再跑一下发现可以啊

@drawable/layer_launcher 这个属于优化部分 启动页加载时有个短暂的白屏跟黑屏,color的颜色设置跟加载页的底色相同的过渡色

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#FFF" />
        </shape>
    </item>
</layer-list>

2、沉浸式

/**
 * 隐藏状态栏   当图片等需要在状态栏中沉浸时 调用此方法
 *
 * @param
 */
public void setStatus() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        //需要设置这个flag contentView才能延伸到状态栏
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        //状态栏覆盖在contentView上面,设置透明使contentView的背景透出来
        getWindow().setStatusBarColor(getResources().getColor(R.color.colorTransBlack));//状态栏颜色设置个半透明的
    } else {
        //让contentView延伸到状态栏并且设置状态栏颜色透明
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值