1

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://segmentfault.com/n/1330000024472005

3 沉浸式状态栏

沉浸式状态栏最好不要从代码中设置,在代码中会有个变色的过程,不是想要的效果

image.png

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"
   ....    >

image.png

添加这个属性之后,底下的导航栏才会有一个相对的沉浸式的展示。

以上的沉浸效果最好别设置title,否则会有各种坑,计算起来很麻烦

4 参考

Android 沉浸式状态栏适配方案

android沉浸式状态栏、fitsSystemWindows、标题栏折叠


20171112
10 声望1 粉丝