Android 4.2 通过修改FrameWork源码实现动态隐藏导航栏,实现全屏

摘要: 对于Android任务栏的隐藏问题确实纠结了很久,最近公司平板设备(Android 4.2)遇到这个需求,所以只能硬着头皮搞定了。 需求如下: 当App操作端(以下简称App)显示时,隐藏导航栏; 当App退出时显示导航栏; 尽量不改变原系统相应实现; 涉及模块, 1:PhoneWindowManager 2:SystemUI 3:App操作端

对于Android任务栏的隐藏问题确实纠结了很久,最近公司平板设备(Android 4.2)遇到这个需求,所以只能硬着头皮搞定了。

需求如下:

当App操作端(以下简称App)显示时,隐藏导航栏;

当App退出时显示导航栏;

尽量不改变原系统相应实现;

涉及模块,

1:PhoneWindowManager

2:SystemUI

3:App操作端

修改说明:

第一步:修改frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java

在Android 4.2中提供原生隐藏导航栏的方式:

View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |    //隐藏导航栏

View.SYSTEM_UI_FLAG_FULLSCREEN    //程序全屏

);

此种方式适合在用户播放视频时使用,但是这种方式在隐藏任务栏时系统会自动在所有窗口之上置顶显示一个透明窗口FakeWindow,并监听用户操作事件,所以当用户触摸屏幕会导致任务栏自动出现。

所以实现我们的需求就需要在隐藏任务栏时禁止FakeWindow显示。

修改如下:

frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java Line2657~2660

修改为:

- 第二步 应用示例

 App启动全屏:


protected void onResume(){
    super.onResume();
    hiddenbar.setSystemUiVisibility(
        SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    );
}

 App关闭恢复任务栏显示:


https://my.oschina.net/SundyCigoOS/blog/536996
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值