赞
踩
为了能够避免一个短暂的黑屏或白屏现象,我们都会在闪屏页面(或者启动页面)的theme上加上一张背景图。但是如果不适配,在全面屏的手机上会有拉伸的现象。
1.在清单文件中配置,全面屏的一些参数
<!-- 允许绘制到oppo、vivo刘海屏机型的刘海区域 -->
<meta-data
android:name="android.max_aspect"
android:value="2.2" /> <!-- 允许绘制到华为刘海屏机型的刘海区域 -->
<meta-data
android:name="android.notch_support"
android:value="true" /> <!-- 允许绘制到小米刘海屏机型的刘海区域 -->
2.创建多个style文件(注意的sdk版本要是高版本的)
普通style
<style name="AppTheme.FullTheme" >
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/splash_bg</item>
<item name="android:windowContentOverlay">@null</item>
</style>
style21
<style name="AppTheme.FullTheme">
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<!--windowTranslucentNavigation这个属性设置成true,则navigationBarColor设置会失效-->
<!--<item name="android:windowTranslucentNavigation">false</item>-->
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/splash_bg</item>
<!--不让windowBackground延申到navigation bar区域-->
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
</style>
style28
<style name="AppTheme.FullTheme">
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<!--windowTranslucentNavigation这个属性设置成true,则navigationBarColor设置会失效-->
<!--<item name="android:windowTranslucentNavigation">false</item>-->
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/splash_bg</item>
<!--不让windowBackground延申到navigation bar区域-->
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<!--适配Android P刘海屏-->
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
3.在drawable目录下创建一个xml文件
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingDefaultResource"> <item> <shape> <solid android:color="@android:color/transparent"/> </shape> </item> <item> <bitmap android:src="@mipmap/icon_splash_new_bg" android:gravity="fill" android:tileMode="disabled" /> </item> </layer-list>
4.创建一个drawable-xxhdpi-2034x1080(或者mipmap-xxhdpi-2034x1080)资源文件夹放18:9的图片
5.在你的启动Activity中加入下面的判断,你的Activtiy的theme引用style文件中的主题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(option);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。