沉浸式和变色龙的区别:
来源:互联网 发布:通辽数据恢复公司 编辑:程序博客网 时间:2024/04/29 17:35
之前把沉浸式的概念搞错了,现在通过项目里添加这个需求终于搞明白了,先区分下这几个概念:
1. 全屏状态 :默认不显示状态栏,下拉才有状态栏,并且会在几秒之后自动消失
2. 沉浸模式 :状态栏仍然一直存在,只不过背景颜色设为透明之后,布局向上填充了 。这种情况下如果在根布局中加入android:fitsSystemWindows=”true”这个配置,布局就不会向上填充,而是把布局的背景色填充到状态栏背景区域。
3. 变色龙模式 :状态栏仍然一直存在,只不过背景颜色改变了,这种情况状态栏只是颜色改变了,并不会被布局填充。
然后说下通过实验总结出来的4.4和5.0系统之前对沉浸和变色龙设置的区别:
android4.4系统:既可以设置沉浸也可以只设置状态栏颜色。只能用主题设置的方式来实现而不能用代码,作用是全局的。但是需要注意的是:4.4系统设置状态栏颜色只能用下面代码实现:
SystemBarTintManager tintManager = new SystemBarTintManager(this); tintManager.setStatusBarTintEnabled(true); tintManager.setStatusBarTintResource(R.color.red);```并且需要同事用代码和注意设置才能实现,并且只有在设置了沉浸式状态下才可以设置状态栏颜色成功,源码中注释如下:/** * Class to manage status and navigation bar tint effects when using KitKat * translucent system UI modes. */public class SystemBarTintManager {。。。}android5.0系统:既可以设置沉浸也可以只设置状态栏颜色。主题设置起作用--全局,也可以在指定activity中用代码设置--局部,这两种方式对5.0都起作用,不同之处在于作用范围。下面是设置沉浸式的代码:方法一:<div class="se-preview-section-delimiter"></div>
private void initStatusBar() {
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);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
方法二:<div class="se-preview-section-delimiter"></div>
private void initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
方法三:<div class="se-preview-section-delimiter"></div>
true
“`
上面三种方法的代码都可以保证5.0以上系统设置沉浸式状态栏,当然SystemBarTintManager 这种方法对5.0也有效,并且5.0中单独使用代码或者主题设置都可以实现。但4.4系统必须在应用中res目录下创建values-v19文件夹并新建一个style文件,然后在文件中添加主题并且同事使用SystemBarTintManager 代码并且同事设置沉浸式才能修改状态栏颜色成功。
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!--状态栏透明--> <item name="android:windowTranslucentStatus">true</item> </style>
上面三种方法的代码都可以保证5.0以上系统设置沉浸式状态栏,当然SystemBarTintManager 这种方法对5.0也有效,并且5.0中单独使用代码或者主题设置都可以实现。但4.4系统必须在应用中res目录下创建values-v19文件夹并新建一个style文件,然后在文件中添加主题并且同事使用SystemBarTintManager 代码并且同事设置沉浸式才能修改状态栏颜色成功。
之前的总结有点乱和不清晰,看了洪阳大神的博客基本上清楚了,简单总结如下:
4.4系统可以设置状态栏透明windowTranslucentStatus:
状态栏透明之后下面布局会自动填充到状态栏,可以通过添加一个和状态栏等高的布局来填充并设置颜色。
5.0系统可以直接通过主题设置colorPrimaryDark状态栏颜色,且底部布局不会自动填充。
- 沉浸式和变色龙的区别:
- Android沉浸模式,沉浸式顶栏,变色龙状态栏
- Android之Translucent Bar半透明栏和immersive bar沉浸式的区别
- 黄昏下的变色龙
- windows7变色龙的安装
- 沉浸式和状态栏的隐藏
- 变色龙
- studio的沉浸式
- android的沉浸式
- 状态栏的设置和沉浸式模式的理解
- 透明状态栏和沉浸式
- DrawerLayout 和 沉浸式布局
- 去掉标题和沉浸式
- 自定义万能的titlebar和沉浸式状态栏
- 沉浸式状态栏时和CoordinatorLayout一起时的坑
- 沉浸式状态栏的实现和版本兼容
- Android隐藏和沉浸式虚拟按键NavigationBar的实现
- android虚拟按键和状态栏的问题 沉浸式状态栏
- 集合
- CSP应用开发-签名和验签
- 对于android.graphics.Path类原安卓文档的翻译
- TCP/IP协议(二)---网络层
- 回溯算法 - 转非递归
- 沉浸式和变色龙的区别:
- bash programming
- 单片机开发仪光盘内容
- android studio 1.4 应用中创建LinearLayout文件报错
- ORACLE SQL性能优化
- servlet中getServletContext().getRealPath("/")相关问题收集
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- sed实现直接修改文件内容
- C#连接数据库测试