android导航栏,Android导航栏透明
Android 如何隐藏导航栏
第一种:始终隐藏navigation,即使点击屏幕也不会出现:
创新互联公司专注于企业成都营销网站建设、网站重做改版、叶集网站定制设计、自适应品牌网站建设、H5网站设计、购物商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为叶集等各大城市提供网站开发制作服务。
WindowManager.LayoutParams params = getWindow().getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;
getWindow().setAttributes(params);
第二种:初始化时隐藏,点击屏幕后Navigation重新出现:
WindowManager.LayoutParams params =getWindow().getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
getWindow().setAttributes(params);
链接:
来源:
Android导航栏隐藏与浮现(二)
在 Android导航栏隐藏与浮现(一) 中已经以 Nexus5 为例, Android M 为基础介绍了怎么实现底部导航栏的隐藏与浮现,本文将介绍怎么在设置(辅助功能)中加入控制该功能的开关。
上图可以看到,应用中加入了一个 Enhance Navigation bar 的选项,该功能开启后可以长点击任务键(Recent)时,导航栏隐藏;从下不向上滑时,导航栏展示。 关闭后即取消了该功能。下面看一下整体的操作步骤:
在 Settings.apk 中修改相应的资源文件即可,修改中可以参考系统设置中的 Large text , 步骤如下:
修改 ./packages/apps/Settings/res/values-zh-rCN/strings.xml ,添加资源名称:
修改 ./packages/apps/Settings/res/values/strings.xml ,添加资源名称:
修改 ./packages/apps/Settings/res/xml/accessibility_settings.xml ,添加开关:
修改 ./frameworks/base/core/java/android/provider/Settings.java ,在内部类 Secure 中添加字段:
修改文件 ./frameworks/base/packages/SettingsProvider/res/values/defaults.xml ,添加默认开关:
修改文件 ./packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java , 修改部分基本和 Large text 的相同,diff后的试图如下,也可以根据下面提供修改前和修改后的文件,可以使用 diff 工具对比查看。
diff后的文件对比试图
AccessibilitySettings修改前 AccessibilitySettings修改后
修改 ./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java ,添加变量:
在recent键长点击处添加开关控制:
使用 mmm 命令针对涉及的模块进行打包。
使用 make snod 命令生成 system.img 。
两次的结合完整的解决了导航栏的隐藏与浮现以及功能控制。
刷机需谨慎!刷机需谨慎!刷机需谨慎!如若刷机请提前备份数据!
Android 沉浸式/透明式状态栏、导航栏
Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果。虽然此特性最早出现在ios,但不否认效果还是很赞的。
至于4.4以下的手机,就不要考虑此特性了,好在4.4以下的手机份额已经非常小了。
我们先来看一下透明状态栏的实现,两种常见效果图如下:
虚拟导航栏并不是所有的手机都有,华为的手机多比较常见,就是上图屏幕底部按钮那块区域。设置导航栏和状态栏类似:
这是官方的解释,大致意思就是我们在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding。
由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。
但是多数情况,我们并不在根布局设置这个属性,我们想要的无外乎是让内容沉浸在状态栏之中。所以我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了。如:
上述方法可以解决普通页面的透明式状态栏需求,如有复杂需求可以参考下面这些:
Android 系统状态栏沉浸式/透明化完整解决方案
Android 沉浸式状态栏的实现
Android沉浸式状态栏(透明状态栏)最佳实现
还有开源库推荐: ImmersionBar
android导航栏与状态栏颜色及透明度
首先创建一个空项目,如下图
可以看到状态栏是白字黑背景, 导航栏也是白图标黑背景
嘿嘿, 我们先把状态栏隐藏掉,在添加一个ImageView, 让ImageView做背景(方便查看)
样子如下:
将状态栏和导航栏设置透明, 找到 Manifest.xml 文件, 在主题样式中修改
android:statusBarColor 设置状态栏背景色
android:navigationBarColor 同上
android:windowLightStatusBar 设置状态栏文字色, true为深色, false为白色
android:windowLightNavigationBar 同上
android:windowTranslucentStatus 设置状态栏半透明状态, true为半透明, false为不透明
android:windowTranslucentNavigation 同上
最后两个半透明状态下面没用, 可自己尝试看效果
效果图如下:
可以看到导航栏与状态栏并没有透明,原因是默认不能占用状态栏空间与导航栏空间,根布局背景为白色,所有这里显示白色
可以通过设置 getWindow().getDecorView().setSystemUiVisibility() 来适配
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 适配状态栏空间
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 适配导航栏空间
效果如下:
新闻名称:android导航栏,Android导航栏透明
链接地址:http://scjbc.cn/article/phhgoi.html