Android 10.0 SystemUI 手势导航 隐藏导航栏底部布局

本文介绍了在Android 10.0 SystemUI中,如何根据客户需求去除手势导航模式下默认显示的黑色横线布局。通过分析`NavigationBarView.java`源码和`home_handle.xml`布局文件,以及修改`NavigationHandle.java`的绘制逻辑,成功实现了隐藏底部导航栏布局的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在10.0SystemUI 中导航栏 分为手势导航和三键导航 三键导航切换到手势导航时,默认会有 一条黑色的横线 布局 代表当前是手势布局
由于客户觉得 这条黑色横线 布局 觉得不美观,所以要求去掉黑色布局 为了实现需求,来看下这个布局

首选看下 NavigationBarView.java 这个底部导航栏布局的源码

public NavigationBarView(Context context, AttributeSet attrs) {
   
    super(context, attrs);
    mIsVertical = false;
    mLongClickableAccessibilityButton = 
### Android 系统导航栏实现与定制 #### 导航栏透明背景功能实现 在 Android 13.0 及更高版本中,为了实现系统 UI 定制中的导航栏透明背景效果,核心类 `NavigationBarView` 发挥着重要作用。该组件位于路径 `frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java` 中[^1]。 具体来说,通过修改 `ActivityThread.java` 文件以及调整 `NavigationBarView.java` 来完成这一特性。前者负责应用程序线程管理;后者则专注于处理导航栏的具体展示逻辑,包括但不限于颜色变化、图标渲染等操作。对于希望达到完全透明的效果,则需进一步探索如何控制这些属性并将其应用到实际项目当中去。 ```java // 修改 NavigationBarView.java 设置背景透明度 setBackgroundColor(Color.TRANSPARENT); ``` #### 手势导航下的导航栏布局 针对基于手势的操作模式,在 Android 10.0 版本引入了一种新的机制用于定义底部导航栏的高度为固定值(如1dp),这不仅简化了视觉设计同时也提高了用户体验的一致性。此行为由 `PhoneWindowManager` 类内的 `layoutWindowLw()` 函数决定窗口的整体结构,而具体的 SystemBars 则是在同一文件里的 `beginLayoutLw()` 进行初始化配置[^2]。 当涉及到更细致的手势交互部分时,《NavigationHandle.java》承担起了绘制任务——它会依据当前设备状态动态调整控件位置及大小,从而确保即使是最细微的动作也能被精准捕捉和响应。 ```xml <!-- res/values/dimens.xml --> <dimen name="navigation_bar_height">1dp</dimen> ``` #### 浸入式导航栏支持 为了让应用程序能够充分利用屏幕空间而不受干扰,Android 提供了一个称为“沉浸模式”的选项。在这种状态下,尽管仍然保留有物理上的导航按钮区域,但是它们会被隐藏起来直到用户主动触发显示为止。这种做法特别适合那些追求极致观看体验的应用场景,比如视频播放器或是游戏界面[^3]。 要启用这样的特性,开发者可以利用 WindowInsets API 或者直接调用 View.setSystemUiVisibility() 方法来请求进入相应的显示模式。值得注意的是,随着不同版本间API的变化,建议查阅官方文档获取最新指导说明。 ```kotlin window.decorView.systemUiVisibility = ( View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN ) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

安卓兼职framework应用工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值