一种安卓系统气泡控件的展示方法、装置及系统与流程

文档序号:13876026阅读:335来源:国知局
一种安卓系统气泡控件的展示方法、装置及系统与流程

本发明涉及通信领域,尤其是一种安卓系统气泡控件的展示方法、装置及系统。



背景技术:

近年来,随着智能手机的广泛应用,android(即安卓)系统平台作为全球最流行的移动操作系统已具有数以亿计的用户。在界面展示方面,android系统是有严格层级关系的,其优先度排序为:windowmanager浮动窗口>activity窗口>普通dialog窗口。而且android系统是在窗口内部也有严格的层级控制,android系统的systemui是一个层级非常高的windowmanager窗口,普通窗口都在systemui窗口之下,并且普通窗口无法截取systemui窗口的焦点。然而,在车载产品领域,尤其是汽车中控ui领域,受systemui窗口的限制,这种android系统窗口层级控制方式存在以下缺陷或不足:

1)指示性不明显,用户观看体验感不强。例如,当android系统需要对插入u盘的消息进行提示时,受systemui窗口给予的权限的限制,systemui窗口不允许消息提示窗口定位该消息的位置来对应展示,指示性不明显,降低了用户的观看体验。

2)适用性不广。受systemui窗口给予的权限的限制,systemui窗口不能将外部事件(如触摸事件)向下层窗口传递,无法应用于android系统需要进行外部事件分发的场合,适用性不广。



技术实现要素:

为解决上述技术问题,本发明的目的在于:提供一种指示性明显、用户观看体验感强和适用性广的安卓系统气泡控件的展示方法、装置及系统。

本发明所采取的第一技术方案是:

一种安卓系统气泡控件的展示方法,包括以下步骤:

检测到新消息;

根据检测到的新消息定位气泡控件的位置并生成气泡控件,所述气泡控件叠加在systemui之上并通过安卓系统的windowmanager来实现,所述气泡控件能将外部事件向下层窗口传递;

对气泡控件进行动画展示。

进一步,所述新消息包括插入u盘的消息,所述外部事件包括点击事件和触摸事件中的至少一个。

进一步,所述根据检测到的新消息定位气泡控件的位置并生成气泡控件这一步骤,具体包括:

根据检测到的新消息定位气泡控件的位置;

根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件。

进一步,所述气泡控件的位置通过调用安卓系统的clickview.getlocationonscreen()函数来定位出来。

进一步,所述根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件这一步骤,具体包括:

调用windowmanager.layoutparams类将气泡控件的类型定义为drag,所述drag的值为2016;

调用windowmanager.layoutparams类为气泡控件添加flag_not_focusable标志,所述flag_not_focusable标志用于在点击外部事件发生时使气泡控件消失;

调用windowmanager.layoutparams类为气泡控件添加flag_layout_no_limits标志,所述flag_layout_no_limits标志用于使气泡控件出现的横轴和纵轴位置不受限制;

调用windowmanager.layoutparams类为气泡控件添加flag_watch_outside_touch标志,所述flag_watch_outside_touch标志用于监听外部触摸事件。

进一步,还包括监听点击外部事件,并在监听到点击外部事件时使气泡控件消失的步骤。

进一步,所述对气泡控件进行动画展示这一步骤,其具体为:

采用scale动画算法对气泡控件进行动画展示。

本发明所采取的第二技术方案是:

一种安卓系统气泡控件的展示系统,包括:

新消息检测模块,用于检测到新消息;

气泡控件生成模块,用于根据检测到的新消息定位气泡控件的位置并生成气泡控件,所述气泡控件叠加在systemui之上并通过安卓系统的windowmanager来实现,所述气泡控件能将外部事件向下层窗口传递;

动画展示模块,用于对气泡控件进行动画展示。

进一步,所述气泡控件生成模块具体包括:

位置定位单元,用于根据检测到的新消息定位气泡控件的位置;

属性设置单元,用于根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件。

本发明所采取的第三技术方案是:

一种安卓系统气泡控件的展示装置,包括:

存储器,用于存储程序;

处理器,用于加载所述程序以执行如第一技术方案所述的一种安卓系统气泡控件的展示方法。

本发明的有益效果是:本发明一种安卓系统气泡控件的展示方法、装置及系统,根据检测到的新消息定位气泡控件的位置并生成气泡控件,所述气泡控件叠加在systemui之上并通过安卓系统的windowmanager来实现,所述气泡控件能将外部事件向下层窗口传递,本发明增设了叠加在systemui之上的气泡控件来突破android系统原有的窗口层级控制局限,通过最高优先级的气泡控件定位消息的位置来对应展示以及将外部事件向下层窗口传递,指示性更强,提升了用户的观看体验,并能应用于android系统需要进行外部事件分发的场合,适用性更广。

附图说明

图1为本发明一种安卓系统气泡控件的展示方法的整体流程图;

图2为本发明实施例1的实现流程图。

具体实施方式

参照图1,本发明一种安卓系统气泡控件的展示方法,包括以下步骤:

检测到新消息;

根据检测到的新消息定位气泡控件的位置并生成气泡控件,所述气泡控件叠加在systemui之上并通过安卓系统的windowmanager来实现,所述气泡控件能将外部事件向下层窗口传递;

对气泡控件进行动画展示。

所述气泡控件是指显示位置不受母窗口显示区域限制的悬浮窗口,其展现形式类似于windows系统右下角事件触发时的提示浮动窗口,主要用于系统消息显示等。本发明的气泡控件与现有悬浮窗口的主要区别包括:现有的悬浮窗口通过嵌入等方式植入systemui中,需依赖systemui而存在(systemui消失后现有的悬浮窗口也不能存在),而且其权限不能高于systemui的权限,不能定位消息的位置,也不能将外部事件向下层窗口传递;而本发明的气泡控件是叠加在systemui之上的一个新控件,不需依赖systemui而能独立存在(systemui消失后该控件仍能存在),而且该控件的权限是最高权限,高于systemui的权限,既能定位消息的位置,又能将外部事件向下层窗口传递,指示性更明显、用户观看体验感更强和适用性更广。windowmanager是安卓系统的窗口管理服务。

进一步作为优选的实施方式,所述新消息包括插入u盘的消息,所述外部事件包括点击事件和触摸事件中的至少一个。

进一步作为优选的实施方式,所述根据检测到的新消息定位气泡控件的位置并生成气泡控件这一步骤,具体包括:

根据检测到的新消息定位气泡控件的位置;

根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件。

其中,windowmanager.layoutparams类是windowmanager窗口的嵌套类;继承于viewgroup.layoutparams,它的内容十分丰富。实际上,windowmanager.java的主要内容就是由这个类的定义构成。

进一步作为优选的实施方式,所述气泡控件的位置通过调用安卓系统的clickview.getlocationonscreen()函数来定位出来。

进一步作为优选的实施方式,所述根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件这一步骤,具体包括:

调用windowmanager.layoutparams类将气泡控件的类型定义为drag,所述drag的值为2016;

调用windowmanager.layoutparams类为气泡控件添加flag_not_focusable标志,所述flag_not_focusable标志用于在点击外部事件发生时使气泡控件消失;

调用windowmanager.layoutparams类为气泡控件添加flag_layout_no_limits标志,所述flag_layout_no_limits标志用于使气泡控件出现的横轴和纵轴位置不受限制;

调用windowmanager.layoutparams类为气泡控件添加flag_watch_outside_touch标志,所述flag_watch_outside_touch标志用于监听外部触摸事件。

其中,drag是一种层级比systemui还高的类别,只有安卓系统的应用方才有权限使用,不受android的生命周期限制。

进一步作为优选的实施方式,还包括监听点击外部事件,并在监听到点击外部事件时使气泡控件消失的步骤。

进一步作为优选的实施方式,所述对气泡控件进行动画展示这一步骤,其具体为:

采用scale动画算法对气泡控件进行动画展示。

与图1的方法相对应,本发明一种安卓系统气泡控件的展示系统,包括:

新消息检测模块,用于检测到新消息;

气泡控件生成模块,用于根据检测到的新消息定位气泡控件的位置并生成气泡控件,所述气泡控件叠加在systemui之上并通过安卓系统的windowmanager来实现,所述气泡控件能将外部事件向下层窗口传递;

动画展示模块,用于对气泡控件进行动画展示。

进一步作为优选的实施方式,所述气泡控件生成模块具体包括:

位置定位单元,用于根据检测到的新消息定位气泡控件的位置;

属性设置单元,用于根据气泡控件的位置调用安卓系统的windowmanager.layoutparams类来设置位气泡控件的属性,生成相应的气泡控件。

与图1的方法相对应,本发明一种安卓系统气泡控件的展示装置,包括:

存储器,用于存储程序;

处理器,用于加载所述程序以执行如图1所述的一种安卓系统气泡控件的展示方法。

下面结合说明书附图和具体实施例对本发明作进一步解释和说明。

实施例1

现有android系统普通窗口的层级全部在systemui之下,指示性不明显、用户观看体验感不强和适用性不广,难以满足车载产品日益增长的高要求。为此,本发明提出了一种新的安卓系统气泡控件的展示技术方案来进行消息通知提醒,以提供更加良好的车载系统的交互体验服务。该技术方案核心是将气泡控件叠加在systemui之上,这是android一种全新的层级框架。

为了满足车载产品的需求(包括窗口层级最高,截获触摸事件并且向下层窗口传递触摸事件,定位到气泡出现的位置,气泡动画),该气泡控件需要采用windowmanager窗口技术方案。windowmanager窗口的层级在android系统中最高,在android系统中windowmanager窗口不受android的生命周期限制,并且由于该窗口在ui界面的最上层,所以其能优先截取到触摸事件,并且向下层窗口传递触摸事件。android系统允许高权限应用获取控件的位置,并为此申请到系统权限,从而定位到气泡控件出现的位置。

区别现有普通的windowmanager窗口,为了能覆盖在systemui之上,本发明的气泡控件采用的windowmanager的type类别是值为2016的drag,只有android系统应用方有权限使用该类别。本发明添加了flag(flag_layout_no_limits)来使气泡控件出现的横轴x和纵轴y位置不受限制;并且为了不影响其他app的焦点,本发明添加了flag(flag_not_focusable),使得用户点击任意外部(相对于气泡控件来说,即气泡控件的外部)时都能使得气泡控件消失,并且不影响其他app的点击事件。此外,本发明添加了flag(flag_watch_outside_touch),通过气泡控件内容view监听触摸事件,在点击外部事件发生时自动通过removeview来使得气泡控件自己消失。在动画方面,为了能更好地模拟气泡控件展现的效果,本发明在动画算法方面主要采用了安卓系统的scale动画算法。

参照图2,本实施例一种安卓系统气泡控件的展示方法具体包括以下步骤:

s101、获取新消息。

s102、获取气泡出现的位置。

s103、设置气泡的属性,生成气泡控件。

s104、监听点击外部事件。

s105、设置气泡动画。

本实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

以外部事件为触摸事件为例,本实施例的展示方法的核心代码如下:

综上所述,本发明一种安卓系统气泡控件的展示方法、装置及系统,突破了现有android窗口等级的限制,首次提出了用气泡控件来实现比systemui更高一层级的窗口,通过最高优先级的气泡控件定位消息的位置来对应展示以及将外部事件向下层窗口传递,从而能第一时间截取触摸屏事件,定位到气泡出现的位置,实现类似window系统的气泡控件,进而进行android系统的气泡控件交互。本发明通过最高优先级的气泡控件定位消息的位置来对应展示以及将外部事件向下层窗口传递,指示性更强,提升了用户的观看体验,并能应用于android系统需要进行外部事件分发的场合,适用性更广。

本发明的技术方案定义了android系统一个全新的最高优先级窗口,为android系统提供了一个全新的气泡交互体验服务。该交互体验服务满足了车载产品,尤其是中控ui的产品需求,目前已在新消息通知提醒方面得到了成功的应用。例如插入u盘时,android系统可通过本发明的技术方案来自动检测到u盘,并自动出现气泡控件动画来进行插入u盘的消息提示。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1