一种控制智能终端导航栏隐藏及显示的方法技术

技术编号:18444375 阅读:35 留言:0更新日期:2018-07-14 10:09
本发明专利技术提供一种控制智能终端导航栏隐藏及显示的方法,通过给SystemUi.apk中操作导航栏的模块注册一个显示或隐藏导航栏的广播,然后在接收到广播后,获取到当前系统导航栏的状态,接着使用系统自带的WindowManager(窗口管理器)将其添加到系统窗口中;在接收到隐藏导航栏的广播后,使用WindowManager(窗口管理器)将之前添加的导航栏移除掉即可实现隐藏导航栏的目的。

A method to control the concealment and display of intelligent terminal navigation bar

The present invention provides a way to control the hidden and display of the intelligent terminal navigation bar by registering a display or hiding the navigation bar in a module operating the navigation bar in the SystemUi.apk, then getting the status of the current system navigation bar after receiving the broadcast, and then using the WindowManager (window manager) brought by the system. ) add it to the system window; after receiving the broadcast of the hidden navigation bar, use the WindowManager (window manager) to remove the previously added navigation bar to achieve the purpose of hiding the navigation bar.

【技术实现步骤摘要】
一种控制智能终端导航栏隐藏及显示的方法
本专利技术属于智能终端
,具体涉及一种控制智能终端导航栏隐藏及显示的方法。
技术介绍
目前,触屏智能按键主要有两种形式,一种是使用实体键,一种是虚拟键。对于前者,市面上的实体键又分为两种,一种是物理按键,例如,苹果的home(主页)键就是典型的物理按键;一种是触控按键,常见的手机有三星,小米,如小米4的底部就采用触控按键实现,包含最近任务,主页和返回键三个触控按键。物理按键通常可以点亮屏幕,而触控按键一般则很难实现。物理按键手感也较虚拟按键更好一些,但是经过长期使用后,容易出现按键使用失效或不灵敏的情况。虚拟键本身就是触摸屏的一部分,通过软件设置,可以动态调整各个虚拟键的位置,并且用户可以通过系统暴露的菜单对其进行隐藏或者显示,使用起来并不比实体键复杂,使用习惯后,虚拟键会比实体键有更好的用户体验。使用虚拟键的另一个好处是只要触摸屏没有损坏,用户就可以一直使用。所以现在越来越多的手机厂商开始选择虚拟键,因为如果虚拟键设计的合理,好用,用户体验不仅不会下降,整个手机的成本也会更有优势。而虚拟键的载体一般都是通过虚拟导航栏来实现,有的厂商允许对虚拟导航栏进行编辑,由用户决定导航栏都放那些按键,以及它们的位置。但是很少有厂商考虑对导航栏的动态控制,目前市场上有的厂商虽然实现了可以通过菜单进行控制,但并不是很方便,如果想隐藏或者显示,只能操作设置菜单。还有一些应用做了一些处理,在Android4.4上借助系统的沉浸模式,可以根据不同的场景,当单击手机屏幕时,可以动态显示或者隐藏导航栏,但这些都是应用程序级别的修改,对于实现系统级别的动态控制虚拟导航栏还没有见到。此专利技术就是用于解决此类问题的一种方法,可以实现系统级别的动态控制虚拟导航栏。现有技术中通过预设的拦截层,来判断用户输入的触屏操作是否符合程序设置的条件,如果符合条件就显示导航栏,如果不符合条件,就等待条件直到符合要求,然后再显示导航栏。这两种情况最终都要在显示导航栏后取消显示拦截层。现有技术存在以下三个缺点:一是只能显示导航栏,无法隐藏导航栏;二是需要额外增加一个拦截层来接收用户的触屏操作,增加这个拦截层将涉及到整个系统的按键事件传递机制的修改,如果修改不当,就会造成整个系统的崩溃增加了系统的实现难度,并且不利于维护;三是不能根据用户的操作,随时动态的显示或者隐藏导航栏,只能满足一定的条件后才能显示导航栏,也无法做到控制导航栏的隐藏。
技术实现思路
为克服上述现有技术的不足,本专利技术提供了一种控制智能终端导航栏隐藏及显示的方法。采用此方案后,首先不需要额外增加一个拦截层,不用对系统进行大规模的修改,只需要修改SystemUi.apk(一个系统应用程序)这个系统应用,以及所有视图的基类View(视图)即可。通过给SystemUi.apk(一个系统应用程序)中操作导航栏的模块注册一个显示或隐藏导航栏的广播,然后在接收到广播后,首先获取到当前系统导航栏的状态,接着使用系统自带的WindowManager(窗口管理器)将其添加到系统窗口中就可以正常显示了;在接收到隐藏导航栏的广播后,同样使用WindowManager(窗口管理器)将之前添加的导航栏移除掉即可实现隐藏导航栏的目的。以上是显示和隐藏的大概实现原理,但还需要在基类View中的长按事件处理方法中来触发显示和隐藏,主要是发送显示或隐藏的广播即可。本方案通过长按当前页面的空白区域来决定是否发送这个广播,好处是当用户长按空白区域时,如果当前应用没有对长按事件进行处理,那系统就会把这个长按事件返回给系统,我们在系统的最后再处理这个长按事件,这样不会和应用的长按事件产生冲突,也不影响原有系统的事件触发和处理机制,因此不会对系统稳定性造成影响。并且某个应用的空白区域很好找到,可以很方便的进行长按操作。本专利技术提供的一种控制智能终端导航栏隐藏及显示的方法,包含如下步骤:S301、开始;S302、系统开机,进入桌面或某个应用中,导航栏默认为开启状态;S303、长按当前界面的空白区域,当前界面接收到长按事件;S304、长按事件传递到基类视图中,在基类视图中处理长按事件;S305、判断长按区域是否注册了长按事件监听器;如果判断结果为是,则执行S306;如果判断结果为否,则执行S308;S306、响应长按事件的监听器,触发回调函数,执行相应的功能;S307、本界面消费了长按事件,无法再继续操作导航栏,执行S3013;S308、在基类View的相关方法中处理长按事件;S309、创建一个自定义的广播消息,并将其发送出去;S3010、systemUI中的PhoneStatusBar模块接收并处理此广播消息;S3011、进入导航栏的显示和隐藏子流程,处理广播消息,根据当前导航栏状态,决定是显示或隐藏;S3012、完成导航栏的显示和隐藏功能;S3013、结束长按事件的处理并退出。根据本专利技术的一个优选实施方式,通过在PhoneStatusBar模块中的start()方法中调用addNavigationBar()方式来实现添加导航栏。根据本专利技术的一个优选实施方式,在基类视图中的performLongClick()方法中处理长按事件。根据本专利技术的一个优选实施方式,基类View中的performLongClick()判断存储监听器的类信息ListenerInfo是否为空,如果不为空,并且它的长按事件监听器mOnLongClickListener也不为空,则执行监听器的回调方法onLongClick,来处理长按事件对应的功能。根据本专利技术的一个优选实施方式,如果注册了监听器,存储监听器的类信息ListenerInfo不为空,且事件监听器mOnLongClickListener也不为空,则执行监听器的回调方法onLongClick,处理长按事件对应的功能。根据本专利技术的一个优选实施方式,如果应用没有注册长按事件的监听器,如果存储监听器的类信息ListenerInfo为空,或者事件监听器mOnLongClickListener为空,则长按事件不会被消费掉,继续往下游传递。根据本专利技术的一个优选实施方式,借助Context上下文的sendOrderedBroadcast()方法,发送一个在手机状态栏模块PhoneStatusBar中创建的“action_show_or_hide_navigation”广播消息,表示要对导航栏进行操作,执行显示或者隐藏。根据本专利技术的一个优选实施方式,其中通过注册,并监听广播的方式来触发显示或隐藏导航栏功能的具体流程如下:S401、系统开机;S402、系统初始化和加载systemUI系统应用程序;S403、初始化PhoneStatusBar模块,显示导航栏;S404、初始化导航栏的状态值mIsDisplayNavigation,将其置为真(true);S405、创建显示和隐藏导航栏;S406、注册一个广播,利用广播接收器监听对导航栏的操作;S407、进入监听此广播状态;S408、判断是否接收到操作导航栏的广播;如果判断结果为否,则实行S409;如果判断结果为是,则执行S4010;S409、待机运行,继续监听,返回执行S407;S4010、接收到广播消息,根据当前状态操作导航栏;本文档来自技高网
...

【技术保护点】
1.一种控制智能终端导航栏隐藏及显示的方法,包含如下步骤:S301、开始;S302、系统开机,进入桌面或某个应用中,导航栏默认为开启状态;S303、长按当前界面的空白区域,当前界面接收到长按事件;S304、长按事件传递到基类视图中,在基类视图中处理长按事件;S305、判断长按区域是否注册了长按事件监听器;如果判断结果为是,则执行S306;如果判断结果为否,则执行S308;S306、响应长按事件的监听器,触发回调函数,执行相应的功能;S307、本界面消费了长按事件,无法再继续操作导航栏,执行S3013;S308、在基类View的相关方法中处理长按事件;S309、创建一个自定义的广播消息,并将其发送出去;S3010、systemUI中的PhoneStatusBar模块接收并处理此广播消息;S3011、进入导航栏的显示和隐藏子流程,处理广播消息,根据当前导航栏状态,决定是显示或隐藏;S3012、完成导航栏的显示和隐藏功能;S3013、结束长按事件的处理并退出。

【技术特征摘要】
1.一种控制智能终端导航栏隐藏及显示的方法,包含如下步骤:S301、开始;S302、系统开机,进入桌面或某个应用中,导航栏默认为开启状态;S303、长按当前界面的空白区域,当前界面接收到长按事件;S304、长按事件传递到基类视图中,在基类视图中处理长按事件;S305、判断长按区域是否注册了长按事件监听器;如果判断结果为是,则执行S306;如果判断结果为否,则执行S308;S306、响应长按事件的监听器,触发回调函数,执行相应的功能;S307、本界面消费了长按事件,无法再继续操作导航栏,执行S3013;S308、在基类View的相关方法中处理长按事件;S309、创建一个自定义的广播消息,并将其发送出去;S3010、systemUI中的PhoneStatusBar模块接收并处理此广播消息;S3011、进入导航栏的显示和隐藏子流程,处理广播消息,根据当前导航栏状态,决定是显示或隐藏;S3012、完成导航栏的显示和隐藏功能;S3013、结束长按事件的处理并退出。2.根据权利要求1所述的控制智能终端导航栏隐藏及显示的方法,其特征在于:通过在PhoneStatusBar模块中的start()方法中调用addNavigationBar()方式来实现添加导航栏。3.根据权利要求1或2所述的控制智能终端导航栏隐藏及显示的方法,其特征在于:在基类视图中的performLongClick()方法中处理长按事件。4.根据权利要求1-3任一所述的控制智能终端导航栏隐藏及显示的方法,其特征在于:基类View中的performLongClick()判断存储监听器的类信息ListenerInfo是否为空,如果不为空,并且它的长按事件监听器mOnLongClickListener也不为空,则执行监听器的回调方法onLongClick,来处理长按事件对应的功能。5.根据权利要求1-4任一所述的控制智能终端导航栏隐藏及显示的方法,其特征在于:如果注册了监听器,存储监听器的类信息ListenerInfo不为空,且事件监听器mOnLongClickListener也不为空,则执行监听器的回调方法onLongClick,处理长按事件对应的功能。6.根据权利要求1-5任一所述的控制智能终端导航栏隐藏及显示的方法,其特征在于:如果应用没有注册长按事件的监听器,如果存储监听器的类信息ListenerInfo为空,或者事件监听器mOnLongClickListener为空,则长按事件不会被消费掉,继续往下游传递。7.根据权利要求1-6任一所述的控制智能终端导航栏隐藏及显示的方法,其特征在...

【专利技术属性】
技术研发人员:肖剑锋
申请(专利权)人:竞技世界北京网络技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1