控制悬浮窗展示的方法、装置、介质和计算设备与流程

文档序号:17488068发布日期:2019-04-23 20:08阅读:228来源:国知局
控制悬浮窗展示的方法、装置、介质和计算设备与流程

本发明的实施方式涉及互联网领域,更具体地,本发明的实施方式涉及一种控制悬浮窗展示的方法、装置、介质和计算设备。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在终端设备(例如,手机)中,通常会通过悬浮窗对用户进行一些快捷操作的展示。现有技术中,悬浮窗的使用受到了各种限制。目前的应用程序采用的更多的是应用内部的悬浮窗。

目前,悬浮窗的实现方式基本包括两种:第一种是通过type_system_alert类型实现;第二种是通过type_toast/type_phone类型实现。其中,第一种实现方式因为存在各种限制,不能被众多开发采纳,故而比较流行的悬浮窗实现方式是第二种。然而,第二种实现方式中,在显示悬浮窗时还需要进行权限的申请,而且在很多种机型上,该悬浮窗的实现方式的适配性很差:例如,在安卓7.1.1以上机型,使用该第二种方式实现的悬浮窗仍需要用户主动授予权限;或者,又例如,在魅族、华为、小米等机型上的悬浮窗默认隐藏,需要引导用户打开悬浮窗。



技术实现要素:

因此在现有技术中,如何实现减少悬浮窗的权限限制,并适配各种机型是非常令人烦恼的过程。

在本上下文中,本发明的实施方式期望提供一种适配性强、且不受操作系统的权限限制的控制悬浮窗展示的方法、装置、介质和计算设备。

在本发明实施方式的第一方面中,提供了一种控制悬浮窗展示的方法。所述方法包括:在应用程序中配置悬浮窗管理器,所述悬浮窗管理器为用于控制所述悬浮窗展示的类,所述悬浮窗管理器中配置有展示方法,所述展示方法用于控制所述悬浮窗展示于在所述悬浮窗管理器中注册的应用界面中;在所述应用程序中配置注册方法,所述注册方法用于在所述应用程序的至少一个应用界面进入可见状态时在所述悬浮窗管理器中注册所述至少一个应用界面;以及在所述应用程序中配置反注册方法,所述反注册方法用于在所述至少一个应用界面切换为不可见状态时在所述悬浮窗管理器中反注册所述至少一个应用界面。

在本发明的一个实施例中,所述注册方法和所述反注册方法配置于所述应用程序的activity基类中。

在本发明的另一个实施例中,所述悬浮窗管理器中还配置有创建方法,其中,所述创建方法用于基于第一用户操作,创建所述悬浮窗。

在本发明的又一个实施例中,所述方法还包括:响应于所述应用程序的第一应用界面的展示,执行所述注册方法,其中所述第一应用界面属于所述至少一个应用界面;判断是否已创建有所述悬浮窗;以及在已创建有所述悬浮窗的情况下,执行所述展示方法以控制所述悬浮窗展示于所述第一应用界面。在本发明的又一个实施例中,所述方法还包括:在未创建有所述悬浮窗的情况下,接受所述第一用户操作;响应于所述第一用户操作,执行所述创建方法以创建所述悬浮窗;以及响应于所述悬浮窗的创建,执行所述展示方法以控制所述悬浮窗展示于所述第一应用界面。

在本发明的又一个实施例中,所述方法还包括响应于所述第一应用界面的退出展示,执行所述反注册方法,以及执行所述展示方法以控制所述悬浮窗从所述第一应用界面移除。

在本发明的又一个实施例中,所述第一应用界面的退出展示包括将所述第一应用界面切换至所述应用程序的第二应用界面,所述第二应用界面属于所述至少一个应用界面,所述方法还包括响应于所述第二应用界面的展示,执行所述注册方法,以及执行所述展示方法以控制所述悬浮窗展示于所述第二应用界面。在本发明的又一个实施例中,所述悬浮窗在所述第二应用界面的展示位置与在所述第一应用界面的展示位置相同。

在本发明的又一个实施例中,所述悬浮窗管理器中还配置有销毁方法,所述销毁方法用于基于第二用户操作,销毁所述悬浮窗。在本发明的又一个实施例中,所述方法还包括接受所述第二用户操作,以及响应于所述第二用户操作,执行所述销毁方法以销毁所述悬浮窗。

在本发明的再一个实施例中,所述方法还包括:检测对所述悬浮窗的触摸操作;响应于检测到的触摸操作,选中所述悬浮窗;记录所述触摸操作的持续时间;以及,在所述触摸操作的持续时间小于阈值时间的情况下,将所述触摸操作作为点击事件进行处理,或者在所述触摸操作的持续时间大于等于阈值时间的情况下,将所述触摸操作作为触摸事件进行处理。

在本发明的再一个实施例中,所述在所述触摸操作的持续时间大于等于阈值时间的情况下,将所述触摸操作作为触摸事件进行处理包括:获取所述触摸操作的原始容器坐标,所述原始容器坐标为所述触摸操作在所述触摸操作的起始时刻相对于所述第一应用界面的位置坐标;获取从所述触摸操作的起始时刻到所述触摸操作的终止时刻所述触摸操作的位移;计算所述触摸操作的当前容器坐标,所述当前容器坐标为在所述触摸操作的终止时刻所述触摸操作相对于所述第一应用界面的位置坐标,所述当前容器坐标=所述原始容器坐标+所述位移;以及基于所述当前容器坐标在所述第一应用界面的第二位置展示所述悬浮窗。

在本发明的再一个实施例中,所述获取从所述触摸操作的起始时刻到所述触摸操作的终止时刻所述触摸操作的位移包括:获取所述触摸操作在所述触摸操作的起始时刻相对于显示屏幕的位置坐标,得到原始屏幕坐标;获取所述触摸操作在所述触摸操作的终止时刻相对于所述显示屏幕的位置坐标,得到当前屏幕坐标;以及计算所述位移,其中,所述位移=所述当前屏幕坐标-所述原始屏幕坐标。

在本发明的再一个实施例中,所述基于所述当前容器坐标在所述第一应用界面的第二位置展示所述悬浮窗包括:判断所述当前容器坐标中的x坐标处于所述显示屏幕的左侧还是右侧,其中所述x坐标的坐标轴方向与所述显示屏幕的宽度方向一致,所述屏幕的左侧和右侧以所述显示屏幕宽度方向的中线为分界线;当所述x坐标处于所述显示屏幕的左侧时,将所述悬浮窗吸附至所述显示屏幕的左边缘进行展示,或者当所述x坐标处于所述显示屏幕的右侧时,将所述悬浮窗吸附至所述显示屏幕的右边缘进行展示。

在本发明的再一个实施例中,所述吸附通过位移动画实现。

在本发明实施方式的第二方面中,提供了一种控制悬浮窗展示的装置,包括管理器配置模块、注册方法配置模块、以及反注册方法配置模块。所述管理器配置模块用于在应用程序中配置悬浮窗管理器,所述悬浮窗管理器为用于控制所述悬浮窗展示的类,所述悬浮窗管理器中配置有展示方法,所述展示方法用于控制所述悬浮窗展示于在所述悬浮窗管理器中注册的应用界面中。所述注册方法配置模块用于在所述应用程序中配置注册方法,所述注册方法用于在所述应用程序的至少一个应用界面进入可见状态时在所述悬浮窗管理器中注册所述至少一个应用界面。所述反注册方法配置模块用于在所述应用程序中配置反注册方法,所述反注册方法用于在所述至少一个应用界面切换为不可见状态时在所述悬浮窗管理器中反注册所述至少一个应用界面。

在本发明的一个实施例中,所述注册方法和所述反注册方法配置于所述应用程序的activity基类中。

在本发明的另一个实施例中,所述悬浮窗管理器中还配置有创建方法,其中,所述创建方法用于基于第一用户操作,创建所述悬浮窗。

在本发明的又一个实施例中,所述装置还包括注册方法执行模块、第一判断模块、以及展示方法执行模块。所述注册方法执行模块用于响应于所述应用程序的第一应用界面的展示,执行所述注册方法,其中所述第一应用界面属于所述至少一个应用界面。所述第一判断模块用于判断是否已创建有所述悬浮窗。所述展示方法执行模块,用于在已创建有所述悬浮窗的情况下,执行所述展示方法以控制所述悬浮窗展示于所述第一应用界面。

在本发明的又一个实施例中,所述装置还包括第一用户操作接受模块、创建方法执行模块。所述第一用户操作接受模块用于在未创建有所述悬浮窗的情况下,接受所述第一用户操作。所述创建方法执行模块用于响应于所述第一用户操作,执行所述创建方法以创建所述悬浮窗。另外,所述展示方法执行模块还用于响应于所述悬浮窗的创建,执行所述展示方法以控制所述悬浮窗展示于所述第一应用界面。

在本发明的又一个实施例中,所述装置还包括反注册方法执行模块。所述反注册方法执行模块用于响应于所述第一应用界面的退出展示,执行所述反注册方法。所述展示方法执行模块还用于执行所述展示方法以控制所述悬浮窗从所述第一应用界面移除。

在本发明的又一个实施例中,所述注册方法执行模块还用于在所述第一应用界面切换至所述应用程序的第二应用界面时,响应于所述第二应用界面的展示,执行所述注册方法,其中所述第二应用界面属于所述至少一个应用界面。所述展示方法执行模块还用于在所述悬浮窗管理器中注册所述第二应用界面后,执行所述展示方法以控制所述悬浮窗展示于所述第二应用界面。在本发明的又一个实施例中,所述悬浮窗在所述第二应用界面的展示位置与在所述第一应用界面的展示位置相同。

在本发明的又一个实施例中,所述悬浮窗管理器中还配置有销毁方法,所述销毁方法用于基于第二用户操作,销毁所述悬浮窗。在本发明的又一个实施例中,所述装置还包括第二用户操作接受模块以及销毁方法执行模块。所述第二用户操作接受模块,用于接受所述第二用户操作。所述销毁方法执行模块用于响应于所述第二用户操作,执行所述销毁方法以销毁所述悬浮窗。

在本发明的再一个实施例中,所述装置还包括检测模块、选中模块、记录模块以及触摸操作处理模块。所述检测模块用于检测对所述悬浮窗的触摸操作。所述选中模块用于响应于检测到的触摸操作,选中所述悬浮窗。所述记录模块用于记录所述触摸操作的持续时间。所述触摸操作处理模块,包括点击事件处理子模块以及触摸事件处理子模块。点击事件处理子模块用于在所述触摸操作的持续时间小于阈值时间的情况下,将所述触摸操作作为点击事件进行处理。触摸事件处理子模块用于在所述触摸操作的持续时间大于等于阈值时间的情况下,将所述触摸操作作为触摸事件进行处理。

在本发明的再一个实施例中,所述触摸事件处理子模块具体用于:获取所述触摸操作的原始容器坐标,所述原始容器坐标为所述触摸操作在所述触摸操作的起始时刻相对于所述第一应用界面的位置坐标;获取从所述触摸操作的起始时刻到所述触摸操作的终止时刻所述触摸操作的位移;计算所述触摸操作的当前容器坐标,所述当前容器坐标为在所述触摸操作的终止时刻所述触摸操作相对于所述第一应用界面的位置坐标,所述当前容器坐标=所述原始容器坐标+所述位移;以及基于所述当前容器坐标在所述第一应用界面的第二位置展示所述悬浮窗。

在本发明的再一个实施例中,所述获取从所述触摸操作的起始时刻到所述触摸操作的终止时刻所述触摸操作的位移包括:获取所述触摸操作在所述触摸操作的起始时刻相对于显示屏幕的位置坐标,得到原始屏幕坐标;获取所述触摸操作在所述触摸操作的终止时刻相对于所述显示屏幕的位置坐标,得到当前屏幕坐标;以及计算所述位移,其中,所述位移=所述当前屏幕坐标-所述原始屏幕坐标。

在本发明的再一个实施例中,所述基于所述当前容器坐标在所述第一应用界面的第二位置展示所述悬浮窗包括:判断所述当前容器坐标中的x坐标处于所述显示屏幕的左侧还是右侧,其中所述x坐标的坐标轴方向与所述显示屏幕的宽度方向一致,所述屏幕的左侧和右侧以所述显示屏幕宽度方向的中线为分界线;当所述x坐标处于所述显示屏幕的左侧时,将所述悬浮窗吸附至所述显示屏幕的左边缘进行展示;或者当所述x坐标处于所述显示屏幕的右侧时,将所述悬浮窗吸附至所述显示屏幕的右边缘进行展示。

在本发明的再一个实施例中,所述吸附通过位移动画实现。

在本发明实施方式的第三方面中,提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行如上所述的方法。

在本发明实施方式的第四方面中,提供了一种计算设备。该计算设备包括存储有可执行指令的一个或多个存储器、以及一个或多个处理器。所述处理器,执行所述可执行指令,用以实现如上所述的方法。

根据本发明实施方式的方法、装置、介质和计算设备,可以在应用内显示悬浮窗,而无需申请任何权限,而且可以适配几乎一切机型,并且可以在任意机型中默认显示悬浮窗,无需引导用户做更多设置,为用户带来了更好的体验。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明实施方式的控制悬浮窗展示的方法和装置的应用场景;

图2示意性地示出了根据本发明实施例的控制悬浮窗展示的方法的流程图;

图3a示意性地示出了根据本发明实施例的应用程序的部分数据结构示意图;

图3b示意性示出了根据本发明实施的悬浮窗在应用程序的用户界面上的展示效果图;

图4a示意性地示出了根据本发明实施例在应用程序运行过程中控制悬浮窗展示的方法的第一部分的流程图;

图4b示意性地示出了根据本发明实施例在应用程序运行过程中控制悬浮窗展示的方法的第二部分的流程图;

图5示意性的示出了根据本发明另一实施例的控制悬浮窗展示的流程图;

图6示意性示出了图5中以触摸事件处理对悬浮窗的触摸操作的方法流程图;

图7示意性示出了根据本发明实施例的用于控制悬浮窗展示的程序产品的示意图;

图8示意性示出了根据本发明实施例的控制悬浮窗展示的装置的方框图;

图9示意性示出了根据本发明另一实施例的控制悬浮窗展示的装置的方框图;以及

图10示意性示出了根据本发明实施例的用于控制悬浮窗展示的计算设备的框图;

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本发明的实施方式,提出了一种控制悬浮窗展示的方法、介质、装置和计算设备。

在本文中,需要理解的是,所涉及的术语悬浮窗管理器表示用于控制所述悬浮窗展示的类,在应用程序的用户界面中展示的悬浮窗为该悬浮窗管理器的一个实例化对象。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,如果在开发阶段,应用程序内部配置用于管理悬浮窗展示的数据类(例如,悬浮窗管理器),然后应用程序运行时通过一个或多个应用界面的展示触发该悬浮窗管理器进行悬浮窗展示的控制,就能够使得悬浮窗展示在应用程序内部,而无需向操作系统申请权限。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

首先参考图1。

图1示意性地示出了根据本发明实施方式的控制悬浮窗展示的方法和装置的应用场景。

需要注意的是,图1所示仅为可以应用本发明实施例的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。

如图1所示,用户终端11中安装有浏览器或者客户端应用,用户通过用户终端11中安装的浏览器或者客户端应用向服务器12发送网页获取请求,服务器12将用户请求的网页发送给用户终端11,由用户终端11中安装的浏览器或者客户端应用对接收到的网页信息进行展示。用户终端11和服务器12通过网络连接,该网络可以为局域网、广域网、移动互联网等。用户终端11可以为便携设备(例如:手机、平板、笔记本电脑等),也可以为个人电脑(pc,personalcomputer)。

用户在用户终端11的浏览器或者客户端应用上进行操作,对各种数据源进行访问。服务器12可以响应于用户操作,为用户提供各种数据访问的服务。

服务器12可以为任何能够提供网站服务、应用开发和/或数据传输服务的服务器设备。以一个客户端app的开发项目为例进行说明。在开发阶段,可以在服务器12中配置该客户端app的各种数据等。配置该客户端app的数据例如,可以是配置悬浮窗管理器、配置该应用程序的activity基类等。

然后,在该客户端app的运行阶段,该客户端app可以安装并运行于用户终端11中。在该客户端app的用户界面中可以展示悬浮窗。用户可以对该悬浮窗进行触摸操作。在一些实施例中,服务器12根据对该客户端app的配置,响应于相应的用户请求向该客户端app提供相应的服务。

需要说明的是,本发明实施例所提供的控制悬浮窗展示的方法一般可以由服务器12执行。相应地,本发明实施例所提供的控制悬浮窗展示的装置一般可以设置于服务器12中。本发明实施例所提供的控制悬浮窗展示的方法也可以由不同于服务器12且能够与用户终端11和/或服务器12通信的其他服务器或服务器集群执行。相应地,本发明实施例所提供的控制悬浮窗展示的装置也可以设置于不同于服务器12且能够与用户终端11和/或服务器12通信的其他服务器或服务器集群中。本发明实施例所提供的控制悬浮窗展示的方法可以部分由服务器12执行,部分由用户终端11执行。相应地,本发明实施例所提供的控制悬浮窗展示的装置可以部分设置于服务器12中,部分设置于用户终端11中。本发明实施例所提供的控制悬浮窗展示的方法也可以由用户终端11执行。相应地,本发明实施例所提供的控制悬浮窗展示的装置可以设置于用户终端11中。

应该理解,图1中的用户终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

示例性方法

下面结合图1的应用场景,参考图2~图6来描述根据本发明示例性实施方式的控制悬浮窗展示的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

图2示意性地示出了根据本发明实施例的控制悬浮窗展示的方法的流程图。

如图2所示,该控制悬浮窗展示的方法可以包括操作s201~操作s203。

在操作s201,在应用程序中配置悬浮窗管理器,该悬浮窗管理器为用于控制悬浮窗的展示的类。

根据本发明的实施例,该悬浮窗管理器中配置有展示方法,该展示方法用于控制该悬浮窗展示于在该悬浮窗管理器中注册的应用界面中。根据本发明的一些实施例,该悬浮窗管理器中还配置有创建方法,其中,该创建方法用于基于第一用户操作,创建该悬浮窗。根据本发明的另一些实施例,该悬浮窗管理器中还配置有销毁方法,该销毁方法用于基于第二用户操作,销毁该悬浮窗。

在操作s202,在该应用程序中配置注册方法,该注册方法用于在该应用程序的至少一个应用界面进入可见状态时在该悬浮窗管理器中注册该至少一个应用界面。从而,可以通过该至少一个应用界面进入可见状态来触发该注册方法的执行,进而当已创建有悬浮窗时将该悬浮窗展示在当前展示的界面中。

在操作s203,在该应用程序中配置反注册方法,该反注册方法用于在该至少一个应用界面切换为不可见状态时在该悬浮窗管理器中反注册该至少一个应用界面。这样,可以通过悬浮窗管理器中的展示方法,来控制该悬浮窗从被反注册的该至少一个应用界面中移除。

根据本发明的实施例,操作s202和操作s203中的该注册方法和该反注册方法配置于该应用程序的activity基类中。

上述的操作s201~操作s203是在该应用程序的开发阶段,在应用程序中配置悬浮窗管理器,同时在应用程序中例如activity基类中配置注册方法和反注册方法。这样,在该应用程序运行时,当该应用程序的至少一个应用界面进入可见状态时,可以通过activity基类中的注册方法在悬浮窗管理器中注册该当前显示的应用界面,进而通过悬浮窗管理器的展示方法将悬浮窗展示于该当前页面中。以此方式,使得悬浮窗可以展示在应用程序内,而无需申请任何权限。在各种机型上都默认可以展示,无需用户进入操作系统的设置页面开启悬浮窗显示选项。相比而言,当前开源技术中申请权限的悬浮窗,不能做到此功能,还需用户手动去操作系统的设置页面开启悬浮窗显示。

另外,在悬浮窗管理器中配置有创建方法和销毁方法。该创建方法和销毁方法规定了悬浮窗的创建或者销毁可以基于用户操作来确定,从而方便了用户根据意愿选择是否展示悬浮窗,提升了用户体验。

根据本发明实施例,该控制悬浮窗展示的方法还可以跨安卓activity或fragment显示。

图3a示意性地示出了根据本发明实施例的应用程序30的部分数据结构示意图。

图3b示意性示出了根据本发明实施例的悬浮窗3在应用程序30的用户界面33上的展示效果图。其中,该悬浮窗3展示于该应用程序30的用户界面33中。

参考图3a和3b,该应用程序30中配置有悬浮窗管理器31(例如,floatingviewmanager)。该悬浮窗管理器31可以是单例模式,其实例化对象为在图3b中的悬浮窗3。在该悬浮窗管理器31中配置有如上所述的展示方法、创建方法和销毁方法。

在该应用程序30的activity基类32中配置有注册方法和反注册方法。例如,可以在activity基类32中的onstart和onstop添加如下代码,来配置上述的注册方法和反注册方法:

以此方式,当该应用程序30的至少一个应用界面进入可见状态时在该悬浮窗管理器31中注册该至少一个应用界面;以及当该应用程序30的至少一个应用界面进入不可见状态时在该悬浮窗管理器31中反注册该至少一个应用界面,从而将悬浮窗3从该至少一个应用界面中移除。

当该应用程序30的至少一个应用界面进入可见状态时,通过该注册方法在该悬浮窗管理器31中进行应用界面的注册,同时调用悬浮窗管理器31的展示方法,从而可以将悬浮窗3展示于该应用界面中。悬浮窗3的展示例如可以参考如下代码实现:

floatingviewmanager.getinstance().add(getapplicationcontext());

在需要根据用户操作销毁悬浮窗3时,可以调用悬浮窗管理器31的销毁方法来销毁悬浮窗3,例如可以参考如下代码实现:

floatingviewmanager.getinstance().remove()。

根据本发明的实施例,在应用程序30中配置悬浮窗管理器31,同时在应用程序30中例如activity基类32中配置注册方法和反注册方法。这样,在应用程序30运行时,当应用程序30的应用界面进入可见状态时,可以通过activity基类32中的注册方法在悬浮窗管理器31中注册当前显示的应用界面,进而调用悬浮窗管理器31的展示方法将悬浮窗展示于该当前应用界面中。并且,当需要销毁悬浮窗3时,可以根据用户操作调用悬浮窗管理器31中的销毁方法来销毁悬浮窗3。以此方式,使得可以在应用程序30内控制悬浮窗3的展示和销毁,而无需申请任何权限。

图4a示意性地示出了根据本发明实施例在应用程序30运行过程中控制悬浮窗展示的方法的第一部分的流程图。

如图4a所示,根据本发明的实施例,该控制悬浮窗展示的方法在经过操作s201~操作s203的配置之后,在应用程序30的运行过程中还可以包括操作s401和操作s402,以及s403~操作s405a或者操作s405b。

在操作s401,响应于该应用程序30的第一应用界面的展示,执行该注册方法,其中该第一应用界面展示于该应用程序30的用户界面33中。

然后在操作s402,判断是否已创建有该悬浮窗3。当判断结果为是时,执行操作s405b;或者,当判断结果为否时,执行操作s403~操作s405a。

具体的,在操作s405b,在已创建有该悬浮窗3的情况下,执行该悬浮窗管理器31的展示方法,以控制该悬浮窗3展示于该第一应用界面。例如,若在该第一应用界面展示之前,用户已经在其他应用界面中进行操作而创建了悬浮窗3。那么在应用程序30的用户界面33切换到该第一应用界面时,在该悬浮窗管理器31中注册了该第一应用界面后,即可在该第一应用界面中展示该悬浮窗3。

或者,在操作s403,在未创建有该悬浮窗3的情况下,接受用于触发该悬浮窗管理器31的创建方法的第一用户操作。然后在操作s404,响应于该第一用户操作,执行该创建方法,以创建该悬浮窗3。接着,在操作s405a响应于该悬浮窗3的创建,执行该悬浮窗管理器31的展示方法以控制该悬浮窗3展示于该第一应用界面。该第一用户操作,例如可以是在用户界面33中任意位置或者特定位置的长按操作、或者多次连续触摸操作等。或者,该第一用户操作,例如可以是触摸操作用户界面33中的创建悬浮窗的按钮的操作。例如,可以在悬浮窗3未创建之前,在用户界面33中显示创建悬浮窗的按钮。当用户触控操作该按钮时创建悬浮窗3。

图4b示意性地示出了根据本发明实施例在应用程序30运行过程中控制悬浮窗展示的方法的第二部分的流程图。根据本发明的实施例,在该第一应用界面中展示了该悬浮窗3之后(操作s405a或操作s405b),还可以包括图4b所示的第二部分的方法流程中的部分或全部操作。

参考图4b,在图4a中的操作s405a或操作s405b之后,该控制悬浮窗展示的方法还可以包括操作s406和操作s407。

在操作s406,响应于该第一应用界面从用户界面33中退出展示,执行该反注册方法。通过该反注册方法,将该第一应用界面的信息从该悬浮窗管理器31中移除。

然后,操作s407执行该悬浮窗管理器31的展示方法,以控制该悬浮窗3从该第一应用界面移除。

根据本发明的一些实施例,该第一应用界面的退出展示可以是该应用程序30关闭。

根据本发明的另一些实施例,该第一应用界面的退出展示也可以是将该应用程序30的用户界面33从第一应用界面切换至该应用程序30的第二应用界面,其中,该第二应用界面属于可以在该悬浮窗管理器31中注册的该至少一个应用界面。在这种情况下,如图4b所示,该控制悬浮窗展示的方法在操作s407之后还可以包括操作s408和操作s409。具体地,在操作s408,响应于该第二应用界面的展示,执行该注册方法,从而在该悬浮窗管理器31中注册该第二应用界面。然后在操作s409,执行该悬浮窗管理器31的展示方法,以控制该悬浮窗3展示于该第二应用界面。

根据本发明的实施例,在切换界面时,会默认执行activity基类32中的onstop和onstart方法,从而调用该注册方法与该反注册方法,先将悬浮窗3从前一级容器中移除,并在进入新的容器界面时,通过页面生命周期再次自动调用该注册方法,将悬浮窗3添加到新的应用界面中。

根据本发明的实施例,该悬浮窗3在该第二应用界面的展示位置与在该第一应用界面的展示位置相同。从而,在切换界面时,悬浮窗3位置保持和其在上一级容器界面的相同位置。根据本发明的实施例,在悬浮窗3的展示过程中,可以自动处理和记录悬浮窗3的坐标显示等信息。

继续参考图4b,根据本发明的实施例,该控制悬浮窗展示的方法还可以包括操作s410和操作s411。在操作s410,接受用于调用该悬浮窗管理器31的销毁方法的第二用户操作。然后,在操作s411,响应于该第二用户操作,执行该销毁方法以销毁该悬浮窗。这样,若用户在创建了悬浮窗3之后,不希望悬浮窗3再展示在用户界面33中时,可以通过第二用户操作销毁悬浮窗3,此时用户界面33中就不再显示悬浮窗3。该第二用户操作,例如可以是用户界面33中展示有悬浮窗3的情况下,在用户界面33中任意位置或者特定位置的以特定的方式进行触控操作(例如,长按操作、或者多次连续触摸操作等)。或者,该第二用户操作,例如可以是在用户界面33中对用于销毁悬浮窗的按钮的触摸操作。例如,可以在用户界面33中展示有悬浮窗3的情况下,在用户界面33中显示用于销毁悬浮窗的按钮。当用户触控操作该按钮时销毁悬浮窗3。再或者,该第二用户操作,例如也可以是用户触控该悬浮窗3的特定位置或按钮,或者对该悬浮窗3执行特定方式的操作。

需要说明的是,图4b中操作s410和操作s411在操作s409之后执行仅是本发明的多种实施例中的其中一种。根据本发明的实施例,操作s410和操作s411可以在创建了悬浮窗3之后的任意时刻都可以执行,并不受应用界面的切换与否限制。

图5示意性的示出了根据本发明另一实施例的控制悬浮窗展示的流程图。根据本发明的实施例,该控制悬浮窗展示的方法在该第一应用界面中展示了该悬浮窗3(操作s405a或操作s405b)之后,还可以包括图5中对第一应用界面中的悬浮窗3进行触摸操作控制的方法流程。

参考图5,根据本发明的实施例,该控制悬浮窗展示的方法在图4a中的操作s405a或操作s405b之后,还可以包括操作s506~操作s508、以及操作s509或操作s510。

具体地,首先在操作s506,检测对该悬浮窗3的触摸操作。然后在操作s507,响应于检测到的触摸操作,选中该悬浮窗3。同时在操作s508,记录该触摸操作的持续时间。以及,在操作s509,在该触摸操作的持续时间小于阈值时间的情况下,将该触摸操作作为点击事件进行处理;或者,在操作s510,在该触摸操作的持续时间大于等于阈值时间的情况下,将该触摸操作作为触摸事件进行处理。

例如,监听屏幕触摸信息,在手指按在屏幕上即将拖动悬浮窗3时记录按下时的时间戳(例如,毫秒数)。并且,判断用户手指抬起的时刻,对应记录手指抬起时的时间戳(例如,毫秒数)。计算抬起时的时间戳减去按下时的时间戳的值,判断是否小于阈值时间(例如,150毫秒,仅为示例)。若小于150毫秒即视为短时间触碰,从而将该触摸操作作为点击事件进行处理,否则将该触摸操作作为触摸事件进行处理。

图6示意性示出了图5中操作s510以触摸事件处理对悬浮窗3的触摸操作的方法流程图。

如图6所示,操作s510可以包括操作s511~操作s514。

首先,在操作s511,获取该触摸操作的原始容器坐标,该原始容器坐标为该触摸操作在该触摸操作的起始时刻相对于该第一应用界面的位置坐标。例如,在手指按在屏幕上即将拖动悬浮窗3时,记录触摸操作的位置相对于第一应用界面的位置坐标,作为原始容器坐标。

然后,在操作s512,获取从该触摸操作的起始时刻到该触摸操作的终止时刻该触摸操作的位移。

根据本发明的实施例,获取该位移的过程具体可以是,首先获取该触摸操作在该触摸操作的起始时刻相对于显示屏幕的位置坐标,得到原始屏幕坐标;然后获取该触摸操作在该触摸操作的终止时刻相对于该显示屏幕的位置坐标,得到当前屏幕坐标;之后计算该位移,其中,该位移=该当前屏幕坐标-该原始屏幕坐标。

接着,在操作s513,计算该触摸操作的当前容器坐标,该当前容器坐标为在该触摸操作的终止时刻该触摸操作相对于该第一应用界面的位置坐标,该当前容器坐标=该原始容器坐标+该位移=该原始容器坐标+该当前屏幕坐标-该原始屏幕坐标。

此后,在操作s514,基于该当前容器坐标在该第一应用界面的第二位置展示该悬浮窗3。

根据本发明的实施例,操作s514中的展示过程具体可以是,首先判断该当前容器坐标中的x坐标处于该显示屏幕的左侧还是右侧,其中该x坐标的坐标轴方向与该显示屏幕的宽度方向一致,该屏幕的左侧和右侧以该显示屏幕宽度方向的中线为分界线;然后,当该x坐标处于该显示屏幕的左侧时,将该悬浮窗3吸附至该显示屏幕的左边缘进行展示;或者当该x坐标处于该显示屏幕的右侧时,将该悬浮窗3吸附至该显示屏幕的右边缘进行展示。根据本发明的实施例,该吸附可以通过位移动画实现。其中,根据本公开的实施例,可以在创建悬浮窗3时,获得屏幕宽度信息。

以屏幕的宽度方向的中线为y轴、该中线以右为x轴正方向、以左为x轴负方向为例,对吸附的具体实现过程说明如下:在手指抬起时计算当前悬浮窗3所在位置的x坐标是否大于等于零。若大于或等于零则可以将悬浮窗3吸附在屏幕右侧显示,反之可以吸附在屏幕左侧显示。吸附时可以使用位移动画,根据x坐标的正负数值确定吸附的方向后,使悬浮窗3作相应距离的吸附移动。具体地,当悬浮窗3向左侧吸附时,悬浮窗3的吸附移动的距离可以是当前容器坐标中的x坐标的绝对值;或者,当悬浮窗3向右侧吸附时,悬浮窗3的吸附移动的距离可以是屏幕宽度的一半减去当前容器坐标中的x坐标。通过这种方式,根据本发明实施例,悬浮窗3在应用内显示,支持拖拽,并且超出屏幕则限制移动(不会超出状态栏等),还可以自动吸附到屏幕边缘。

示例性介质

在介绍了本发明示例性实施方式的方法之后,接下来,参考图7对本发明示例性实施方式的用于控制悬浮窗展示的程序产品700进行介绍。

根据本发明的实施例,还提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行如上所述的控制悬浮窗展示的方法。

在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的控制悬浮窗展示的方法中的操作,例如,所述计算设备可以执行如图2中所示的操作s201:在应用程序30中配置悬浮窗管理器31,所述悬浮窗管理器31为用于控制所述悬浮窗3展示的类;在操作s202:在所述应用程序30中配置注册方法,所述注册方法用于在所述应用程序30的至少一个应用界面进入可见状态时在所述悬浮窗管理器31中注册所述至少一个应用界面;操作s203:在所述应用程序30中配置反注册方法,所述反注册方法用于在所述至少一个应用界面切换为不可见状态时在所述悬浮窗管理器31中反注册所述至少一个应用界面。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图7所示,描述了根据本发明实施例的用于控制悬浮窗展示的程序产品700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如java,c++等,还包括常规的过程式程序设计语言——诸如“c”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

示例性装置

在介绍了本发明示例性实施方式的介质之后,接下来,参考图8和图9对本发明示例性实施方式的控制悬浮窗展示的装置进行描述。

图8示意性示出了根据本发明实施例的控制悬浮窗展示的装置800的方框图。

如图8所示,根据本发明的实施例,该装置800包括管理器配置模块810、注册方法配置模块820、以及反注册方法配置模块830。

管理器配置模块810用于在应用程序30中配置悬浮窗管理器31,该悬浮窗管理器31为用于控制该悬浮窗3展示的类(操作s201)。

根据本发明的实施例,该悬浮窗管理器31中配置有展示方法,该展示方法用于控制该悬浮窗3展示于在该悬浮窗管理器31中注册的应用界面中。根据本发明的一些实施例,该悬浮窗管理器31中还配置有创建方法,其中,该创建方法用于基于第一用户操作,创建该悬浮窗3。根据本发明的另一些实施例,该悬浮窗管理器31中还配置有销毁方法,该销毁方法用于基于第二用户操作,销毁该悬浮窗3。

注册方法配置模块820用于在该应用程序30中配置注册方法,该注册方法用于在该应用程序30的至少一个应用界面进入可见状态时在该悬浮窗管理器31中注册该至少一个应用界面(操作s202)

反注册方法配置模块830用于在该应用程序30中配置反注册方法,该反注册方法用于在该至少一个应用界面切换为不可见状态时在该悬浮窗管理器31中反注册该至少一个应用界面(操作s203)。

根据本发明的实施例,该注册方法和该反注册方法可以配置于该应用程序30的activity基类32中。

继续参考图8,该装置800还以包括注册方法执行模块840、第一判断模块850、以及展示方法执行模块860。该注册方法执行模块840用于响应于该应用程序30的第一应用界面的展示,执行该注册方法,其中该第一应用界面属于该至少一个应用界面(操作s401)。该第一判断模块850用于判断是否已创建有该悬浮窗3(操作s402)。该展示方法执行模块860用于在已创建有该悬浮窗3的情况下,执行该展示方法以控制该悬浮窗3展示于该第一应用界面(操作s405b)。

根据本发明的另一些实施例,该装置800还可以包括第一用户操作接受模块870和创建方法执行模块880。该第一用户操作接受模块870用于在未创建有该悬浮窗3的情况下,接受该第一用户操作(操作s403)。该创建方法执行模块880用于响应于该第一用户操作,执行该创建方法以创建该悬浮窗3(操作s404)。另外,该展示方法执行模块860还用于响应于该悬浮窗3的创建,执行该展示方法以控制该悬浮窗3展示于该第一应用界面(操作s405a)。

根据本发明的又一实施例,该装置800还包括反注册方法执行模块890。该反注册方法执行模块890用于响应于该第一应用界面的退出展示,执行该反注册方法(操作s406)。该展示方法执行模块860还用于执行该展示方法以控制该悬浮窗3从该第一应用界面移除(操作s407)。

根据本发明的实施例,该注册方法执行模块840还用于在该第一应用界面切换至该应用程序30的第二应用界面时,响应于该第二应用界面的展示,执行该注册方法,其中该第二应用界面属于该至少一个应用界面(操作s408)。该展示方法执行模块860还用于在该悬浮窗管理器31中注册该第二应用界面后,执行该展示方法以控制该悬浮窗3展示于该第二应用界面(操作s409)。根据本发明的实施例,该悬浮窗3在该第二应用界面的展示位置与在该第一应用界面的展示位置相同。

根据本发明的另一些实施例,该装置800还包括第二用户操作接受模块8100以及销毁方法执行模块8111。该第二用户操作接受模块8100用于接受该第二用户操作(操作s410)。该销毁方法执行模块用于响应于该第二用户操作,执行该销毁方法以销毁该悬浮窗3(操作s411)。

图9示意性示出了根据本发明另一实施例的控制悬浮窗展示的装置900的方框图。

如图9所示,根据本发明的实施例,该装置900可以包括与装置800相同的管理器配置模块810、注册方法配置模块820、反注册方法配置模块830、注册方法执行模块840、第一判断模块850以及展示方法执行模块860,此外该装置900还可以包括检测模块910、选中模块920、记录模块930以及触摸操作处理模块940。

具体地,检测模块910用于在悬浮窗3展示于第一应用界面之后,检测对该悬浮窗3的触摸操作(操作s506)。选中模块920用于响应于检测到的触摸操作,选中该悬浮窗3(操作s507)。记录模块930用于记录该触摸操作的持续时间(操作s508)。触摸操作处理模块940可以包括点击事件处理子模块941、和触摸事件处理子模块942。其中,点击事件处理子模块941用于在该触摸操作的持续时间小于阈值时间的情况下,将该触摸操作作为点击事件进行处理(操作s509)。触摸事件处理子模块942用于在该触摸操作的持续时间大于等于阈值时间的情况下,将该触摸操作作为触摸事件进行处理(操作s510)。

根据本发明的实施例,该触摸事件处理子模块942具体用于:首先获取该触摸操作的原始容器坐标,该原始容器坐标为在该触摸操作的起始时刻该触摸操作相对于该第一应用界面的位置坐标(操作s511);然后获取从该触摸操作的起始时刻到该触摸操作的终止时刻该触摸操作的位移(操作s512);接着计算该触摸操作的当前容器坐标,该当前容器坐标为在该触摸操作的终止时刻该触摸操作相对于该第一应用界面的位置坐标,该当前容器坐标=该原始容器坐标+该位移(操作s513);最后基于该当前容器坐标在该第一应用界面的第二位置展示该悬浮窗3(操作s514)。

根据本发明的实施例,该获取从该触摸操作的起始时刻到该触摸操作的终止时刻该触摸操作的位移包括:获取该触摸操作在该触摸操作的起始时刻相对于显示屏幕的位置坐标,得到原始屏幕坐标;获取该触摸操作在该触摸操作的终止时刻相对于该显示屏幕的位置坐标,得到当前屏幕坐标;以及计算该位移,其中,该位移=该当前屏幕坐标-该原始屏幕坐标。

根据本发明的实施例,该基于该当前容器坐标在该第一应用界面的第二位置展示该悬浮窗3,包括:判断该当前容器坐标中的x坐标处于该显示屏幕的左侧还是右侧,其中该x坐标的坐标轴方向与该显示屏幕的宽度方向一致,该屏幕的左侧和右侧以该显示屏幕宽度方向的中线为分界线;当该x坐标处于该显示屏幕的左侧时,将该悬浮窗3吸附至该显示屏幕的左边缘进行展示;或者当该x坐标处于该显示屏幕的右侧时,将该悬浮窗3吸附至该显示屏幕的右边缘进行展示。根据本发明的实施例,该吸附通过位移动画实现。

需要说明的是,上述装置800和装置900的框图中仅是示例性的,而非限制性的。在其他一些实施例中,上述描述的各个模块在不冲突的情况下可以以其他任意形式进行组合。并且,应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。

示例性计算设备

在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图10对本发明示例性实施方式的用于控制悬浮窗展示的计算设备进行说明。

本发明实施例还提供了一种计算设备。该计算设备包括存储有可执行指令的一个或多个存储器、以及一个或多个处理器。所述处理器,执行所述可执行指令,用以实现如上所述的控制悬浮窗展示的方法。

本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的控制悬浮窗展示的方法中的操作,例如,所述计算设备可以执行如图2中所示的操作s201:在应用程序30中配置悬浮窗管理器31,所述悬浮窗管理器31为用于控制所述悬浮窗3展示的类;在操作s202:在所述应用程序30中配置注册方法,所述注册方法用于在所述应用程序30的至少一个应用界面进入可见状态时在所述悬浮窗管理器31中注册所述至少一个应用界面;操作s203:在所述应用程序30中配置反注册方法,所述反注册方法用于在所述至少一个应用界面切换为不可见状态时在所述悬浮窗管理器31中反注册所述至少一个应用界面。

下面参照图10来描述根据本发明示例性实施方式的用于控制悬浮窗展示的计算设备1000。如图10所示的计算设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图10所示,计算设备1000以通用计算设备的形式表现。计算设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030。

总线1030包括数据总线、控制总线和地址总线。

存储单元1020可以包括易失性存储器,例如随机存取存储器(ram)1021和/或高速缓存存储器1022,还可以进一步包括只读存储器(rom)1023。

存储单元1020还可以包括具有一组(至少一个)程序模块1024的程序/实用工具1025,这样的程序模块1024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备1000也可以与一个或多个外部设备1040(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/0)接口1050进行。并且,计算设备1000还可以通过网络适配器1030与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1030通过总线1030与计算设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

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