当前位置: 首页 > article >正文

Android Framework定制navigationBar显示

导航栏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);

作者:帅得不敢出门


http://www.kler.cn/news/354584.html

相关文章:

  • AcWing 1023 买书
  • k8s-services资源-pod详解
  • Java实现八种排序
  • 【微信小程序_17_生命周期】
  • Java Springboot 后端使用Mockito库进行单元测试流程
  • 云原生后端技术:构建高可靠、可扩展的现代应用
  • 岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类
  • 2024系统架构师---试题二论软件架构的脆弱性
  • Linux·进程控制
  • 【贪心算法】(第一篇)
  • OpenShift 4 - 云原生备份容灾 - Velero 和 OADP 基础篇
  • 《案例》—— OpenCV 实现2B铅笔填涂的答题卡答案识别
  • MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读
  • 公司新来一个同事,把枚举运用得炉火纯青...
  • 【Flutter】Dart:库
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及配电线路脆弱性的电动汽车充放电时空分布优化策略》
  • day46|72. 编辑距离647. 回文子串516.最长回文子序列 5 最长回文子串
  • vue3 使用 Vue Router实现前端路由控制
  • 【Echarts动态排序图,series使用背景色更新动画,背景底色不同步跟随柱子动画】大家有没有解决方案
  • 遥感技术助力生态系统碳储量、碳收支、碳循环等多领域监测与模拟:森林碳储量,城市扩张,夜间灯光数据,陆地生态系统,大气温室气体监测等