转载请注明地址: http://write.blog.youkuaiyun.com/postedit?ref=toolbar&ticket=ST-115185-XsUMM5H1LCzIubq12aQ6-passport.youkuaiyun.com 谢谢!
对于动态显示和隐藏状态栏,写Demo中可能很容易就实现了,但是在项目中就不一定了,因为牵扯的方面可能太多了,下面说说我踩的那些坑:
1,必须保证当前ac继承的ac没有问题,有人说不要使用AppCompatAc,但我试了下是没有问题的,还有就是你要保证你继承的ac里面没有做一个全屏什么的判断,具体自己看吧(lz就是在这里被坑的........)
2,在Android 4.1 之后,View有方法setSystemUiVisiability(params)可以设置状态栏的显示隐藏,但是使用这个方法有一个bug就是当你手动把状态栏触摸下来后,它是会一直显示的咯,就是你的隐藏失效了.至于params请自行百度哈,很多博客都有详细描叙,具体代码如下:
public void onClick(View view) {
switch (view.getId()) {
case R.id.bt1:
bt1.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
break;
case R.id.bt2:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
break;
}
}
3,设置窗口来隐藏状态栏,使用这个的好处就是当你手动触摸屏幕把状态栏显示出来后,大约两秒状态栏还是会自动隐藏起来,完美解决上面那方法的不足之处,具体代码如下:
//隐藏状态栏
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 显示状态栏
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);