1. 设置全屏
<!-- 全屏 - 启动页最下面的各种状态栏也去掉,清单中启动 Activity 援用 -->
<style name="FullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<!-- 没有 title,在 application 的 theme 中援用 -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!--<item name="android:windowNoTitle">true</item>-->
</style>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"> // 在这援用
<activity android:name=".StartActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/FullScreenTheme" // 在这援用
>
2 启动页倒计时跳转
https://gitee.com/hjmayun/codes/wofkb9z1y72e845xid0jg24
3 沉迷式状态栏
沉迷式状态栏最好不要从代码中设置,在代码中会有个变色的过程,不是想要的成果
1 新建两个文件夹 values 的 -v19,-v21 的:
v19 的 styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--values-19. v19 开始有 android:windowTranslucentStatus 这个属性,这个属性为将状态 -->
<style name="TranslucentStatusTheme" parent="AppTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
v21 的 styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="TranslucentStatusTheme" parent="AppTheme">
<item name="android:windowTranslucentStatus">false</item>
<!-- 下部的导航栏也设置成沉迷 -->
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<!-- Android 5.x 开始须要把色彩设置通明,否则导航栏会出现零碎默认的浅灰色 -->
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
能够看到,零碎应用的都是 TranslucentStatusTheme 这个主题,只不过在不同 api 下他的属性有差异。
在 values 的 style.xml 下
我的 AppTheme 是 NoActionBar 的
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!--title(actionbar) 的色彩 -->
<item name="colorPrimary">@color/black</item>
<!-- 状态栏色彩 -->
<item name="colorPrimaryDark">@color/transparent</item>
<!-- 浮动的 button、光标色彩 -->
<item name="colorAccent">@color/bluelogin</item>
</style>
写一个 TranslucentStatusTheme,空实现就能够:
<style name="TranslucentStatusTheme" parent="AppTheme">
</style>
2 在清单 manifest.xml 中,application 援用这个主题即可
<application
.....
android:theme="@style/TranslucentStatusTheme">
3 留神
在 layout 的 xml 下的根布局须要增加属性:android:fitsSystemWindows=”true”
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
....
android:fitsSystemWindows="true"
.... >
增加这个属性之后,底下的导航栏才会有一个绝对的沉迷式的展现。
以上的沉迷成果最好别设置 title,否则会有各种坑,计算起来很麻烦
4 参考
Android 沉迷式状态栏适配计划
android 沉迷式状态栏、fitsSystemWindows、标题栏折叠