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://myzitong.com/article/phhgoi.html