Immersive mode on splash screen

时间:2017-08-30 20:04:51

标签: android splash-screen statusbar

I'm trying to implement a splash screen that takes the whole screen. So, the Status Bar needs to be hidden, but only during the splash screen. Right now the splash screen shows up but the status bar is still shown too. I tried this approach with no success:

Snackbar

This is my splash resource file:

Snackbar

launch_screen.xml:

if(!isConnectedToInternet()){
Snackbar snackbar = Snackbar
    .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG)
    .setAction("RETRY", new View.OnClickListener() {
        @Override
        public void onClick(View view) {

             //What do I write here?

            }
        });



}

private boolean isConnectedToInternet(Context context) {
        ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        return netInfo != null && netInfo.isConnectedOrConnecting();
    }

manifest file:

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

Any help is much appreciated!

1 个答案:

答案 0 :(得分:0)

如果有人发现它有用,我在我的样式文件中添加了以下行:

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

现在它就像一个魅力!