【问题标题】:Immersive mode on splash screen初始屏幕上的沉浸式模式
【发布时间】:2017-08-30 20:04:51
【问题描述】:

我正在尝试实现一个占据整个屏幕的启动画面。因此,需要隐藏状态栏,但仅在启动屏幕期间。 现在启动画面出现了,但状态栏仍然显示。 我尝试了这种方法但没有成功:

public class LaunchScreen extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);

        startActivity(new Intent(LaunchScreen.this, MainActivity.class));
        finish();
    }
}

这是我的启动资源文件:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/launch_screen</item>
</style>

launch_screen.xml:

<item android:drawable="@color/colorPrimary" />
<item>
    <bitmap
        android:gravity="center"
        android:src="@mipmap/ic_launcher" />
</item>

清单文件:

    <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=".LaunchScreen"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".MainActivity" />

非常感谢任何帮助!

【问题讨论】:

  • 你可以让它透明并且你的启动图像在它下面
  • @AhmedAbd-Elmeged 我可以使哪些部分透明?
  • 这是你想要的形状吗?如果是,我会回答这个问题
  • @AhmedAbd-Elmeged 答案是肯定的和否定的。我看到您的背景占据了整个屏幕,这正是我想要的,但我根本不希望显示时间或顶部(状态栏)上的所有通知图标。

标签: android splash-screen statusbar


【解决方案1】:

如果有人觉得它有帮助,我在我的样式文件中添加了以下几行:

 <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/launch_screen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

然后从 LauncherScreen 类中删除这些行:

getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);

现在它就像一个魅力!

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2013-12-23
    • 2014-03-07
    • 2020-02-04
    相关资源
    最近更新 更多