Android状态栏花样设置
来源:互联网 发布:新网络安全法内容 编辑:程序博客网 时间:2024/04/28 12:53
一、沉浸栏
说到沉浸栏,这个沉浸栏效果在很多游戏或者视频软件应用会用到。平时状态栏和导航栏都隐藏了,点屏幕中间部分不会出现,但是从屏幕上方滑动,或者右侧滑动的话,就会出现状态栏和导航栏,而且过一段时间后,状态栏也会缩回去。效果如下所示。
其实它的实现说起来也很简单,重写一下Activity的onWindowFocusChanged()方法。
由于在19版本后才有沉浸栏,所以要判断一下。
@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); } }
二、隐藏状态栏
隐藏状态栏后,从屏幕上方向下滑动状态栏会出来,但不会退回去。
效果如下:
代码实现
/** * 隐藏状态栏和标题栏,隐藏状态栏和ActionBar的方式在4.1系统之上和4.1系统之下还是不一样的 * 这里我就不准备考虑4.1系统之下的兼容性了 */ private void hideStatusBar() { View decorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(option); ActionBar actionBar = getSupportActionBar(); actionBar.hide(); }
三、透明状态栏
效果:
实现
//5.0 21 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); //需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//19版本 4.4 - 5.0版本 Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); ViewGroup mContentView = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT); View statusBarView = mContentView.getChildAt(0); //移除假的 View if (statusBarView != null && statusBarView.getLayoutParams() != null && statusBarView.getLayoutParams().height == getStatusBarHeight()) { mContentView.removeView(statusBarView); } //不预留空间 if (mContentView.getChildAt(0) != null) { ViewCompat.setFitsSystemWindows(mContentView.getChildAt(0), false); } } ActionBar actionBar = getSupportActionBar(); actionBar.hide();
private int getStatusBarHeight() { int result = 0; int resId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resId > 0) { result = getResources().getDimensionPixelSize(resId); } return result; }
这个分了两部分,一个是5.0以上版本,另外一个是4.4~5.0的。
在5.0版本中,设置相关的flag和setStatusBarColor(Color.TRANSPARENT)就可以实现状态栏透明化。
4.4版本采用的是另外的方法。
四、隐藏状态栏和导航栏
效果图:
触摸屏幕会出现状态栏和导航栏,且不回弹。
/** * 隐藏导航栏和状态栏 */ private void hideStatusBarANavigationBar() { /* if(Build.VERSION.SDK_INT<16){ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }*/ View decorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(option); ActionBar actionBar = getSupportActionBar(); actionBar.hide(); }
五、透明状态栏和导航栏
效果图:
实现代码:
/** * 透明状态栏和导航栏 */ private void transparentStatusBarANavigationBar() { if (Build.VERSION.SDK_INT >= 21) { Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 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); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setNavigationBarColor(Color.TRANSPARENT); getWindow().setStatusBarColor(Color.TRANSPARENT); } ActionBar actionBar = getSupportActionBar(); actionBar.hide(); }
阅读全文
0 0
- Android状态栏花样设置
- Android花样Text设置神器之SpanableString简介
- android 设置状态栏
- 设置android 状态栏透明
- Android设置状态栏颜色
- android 设置一体化状态栏
- android设置状态栏透明
- android设置状态栏颜色
- android 设置状态栏隐藏
- Android 状态栏设置
- Android 设置状态栏颜色
- Android 状态栏背景设置
- android设置透明状态栏
- android状态栏设置
- Android 状态栏颜色设置
- Android设置透明状态栏
- android沉浸式状态栏封装—教你玩出新花样
- Android状态栏颜色设置(沉浸式状态栏)
- MATLAB图像处理-流控制和代码优化
- Spring Aspect简单实例
- codeforces 848E. Days of Floral Colours
- CAS server 5.0.8 war包
- POJ 1228 Grandpa's Estate(凸包应用:稳定凸包)
- Android状态栏花样设置
- 学习有法,事半功倍 — 在线学习的10个技巧
- 单词拼接
- Linux文件体系结构和基础命令
- 安装Vware tools
- 将exe文件弄成安装版
- Servlet(1)入门
- 负载均衡算法小结
- vector和list的使用