Android 沉浸式状态栏

来源:互联网 发布:校园网络自助平台 编辑:程序博客网 时间:2024/06/08 07:29

1.状态栏和导航栏存在,且都为透明,根据当前的xml布局文件的颜色变化而变化。
模拟器效果:
这里写图片描述
实现代码:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        if (Build.VERSION.SDK_INT >= 21) {            View decorView = getWindow().getDecorView();            int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;            decorView.setSystemUiVisibility(option);            getWindow().setNavigationBarColor(Color.TRANSPARENT);            getWindow().setStatusBarColor(Color.TRANSPARENT);        }        ActionBar actionBar = getSupportActionBar();        actionBar.hide();    }}

2.完全沉浸式,初始隐藏状态栏和导航栏。上滑或者下滑显示导航栏和状态栏,二者均是透明色。
模拟器效果:
这里写图片描述
这里写图片描述
实现代码:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public void onWindowFocusChanged(boolean hasFocus) {        super.onWindowFocusChanged(hasFocus);        if (hasFocus && Build.VERSION.SDK_INT >= 19) {            View decorView = getWindow().getDecorView();            decorView.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                            | View.SYSTEM_UI_FLAG_FULLSCREEN                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);        }    }}

参考:http://www.jianshu.com/p/2a884e211a62