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); } }