Android Framework定制navigationBar显示

安卓导航栏

安卓导航栏是位于屏幕底部的一栏按钮或区域,用于帮助用户导航和操作应用程序的不同模块。

功能

  1. 返回功能:通过点击返回按钮,用户可以轻松回到上一个界面,方便在操作过程中进行回溯,比如在浏览网页、查看文档或使用应用程序时,能够快速返回上一级菜单或上一个操作页面。
  2. 主页功能:主页按钮可以让用户一键回到手机桌面,快速访问手机上的各种应用程序和文件,便于用户在使用完某个应用后,快速回到起始界面,重新选择其他应用或操作。
  3. 多任务视图功能:多任务视图按钮能够展示最近使用的应用程序列表,用户可以在不同应用之间快速切换,无需重新打开应用,提高了操作效率,方便用户同时管理和使用多个应用程序。
  4. 其他功能:一些安卓手机还会在导航栏中提供如最近应用、搜索、设置等功能,进一步丰富了导航栏的实用性,满足用户不同的操作需求。

导航栏3种模式

在安卓系统中,“config_navBarInteractionMode” 是一个特定的配置参数,用于设定安卓设备导航栏的交互模式。
frameworks/base/core/res/res/values/config.xml

    <!-- Controls the navigation bar interaction mode:
         0: 3 button mode (back, home, overview buttons)
         1: 2 button mode (back, home buttons + swipe up for overview)
         2: gestures only for back, home and overview -->
  1. 0 3按键导航 底部有3个按键
  2. 1 2按键导航 底部有2个按键
  3. 2 手势导航 底部有一条横线

如下图为三按键模式:

在这里插入图片描述

如下图为手势模式

在这里插入图片描述

修改设置默认为手势导航模式

diff --git a/frameworks/base/core/res/res/values/config.xml b/frameworks/base/core/res/res/values/config.xml
index bed476cdc0..fc961154b3 100755
--- a/frameworks/base/core/res/res/values/config.xml
+++ b/frameworks/base/core/res/res/values/config.xml
@@ -3235,7 +3235,7 @@
          0: 3 button mode (back, home, overview buttons)
          1: 2 button mode (back, home buttons + swipe up for overview)
          2: gestures only for back, home and overview -->
-    <integer name="config_navBarInteractionMode">0</integer>
+    <integer name="config_navBarInteractionMode">2</integer>

     <!-- Controls whether the nav bar can move from the bottom to the side in landscape.
          Only applies if the device display is not square. -->

控制导航栏显示

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
控制三个按钮的显示: 返回、HOME、Recents

         getBackButton().setVisibility(disableBack       ? View.INVISIBLE : View.VISIBLE);
         getHomeButton().setVisibility(disableHome       ? View.INVISIBLE : View.VISIBLE);
         getRecentsButton().setVisibility(disableRecent  ? View.INVISIBLE : View.VISIBLE);

控制手势横线的显示可以通过这条语句

getHomeHandle().setVisibility(disableHomeHandle ? View.INVISIBLE : View.VISIBLE);

下面这个修改是隐藏navigationBar的三键与手势横线,前面我们修改的是设置为手势模式,这里虽然隐藏了手势横线的显示,但是手势模式中的左右滑退出的功能是还存在的。

diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index d0c0226db9..c3561681ee 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -819,6 +819,8 @@ public class NavigationBarView extends FrameLayout implements
             }
         }

+        // hide navigationbar
+        disableBack = disableHome = disableRecent = disableHomeHandle = true;
         getBackButton().setVisibility(disableBack       ? View.INVISIBLE : View.VISIBLE);
         getHomeButton().setVisibility(disableHome       ? View.INVISIBLE : View.VISIBLE);
         getRecentsButton().setVisibility(disableRecent  ? View.INVISIBLE : View.VISIBLE);

作者:帅得不敢出门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值