窗口显示控制方法和装置与流程

文档序号:14940646发布日期:2018-07-13 20:38阅读:124来源:国知局

本公开涉及计算机应用技术领域,特别涉及一种窗口显示控制方法和装置。



背景技术:

屏幕所进行的显示中,例如,电脑屏幕上,通常在其左下角或右下角显示有一可移动的小窗口,用来显示通知消息或活动信息。移动终端也有类似的机制,可以在界面上显示一小窗口。

移动终端中小窗口,即浮层窗口,可以通过两种方式实现。一种方式是采用移动终端中操作系统默认支持的浮层窗口实现机制,另一种方式则是获取每个活动组件(activity组件)的根视图(rootview),在根视图中添加浮层窗口。

然而,对于移动终端中操作系统默认支持的浮层窗口实现机制,却存在着以下两个问题:

(1)浮层窗口的实现需要申请权限,并且在部分rom(存放移动终端固件代码的存储器)中,此权限是默认关闭的,需要引导用户手动开启,这无疑会引起用户的使用成本,导致相当一部分用户无法使用此功能;

(2)移动终端中浮层窗口的实现是全局的。也就是说,即使应用已经被切换至后台,浮层窗口仍然显示在界面上,进而对此界面的显示造成干扰。

对于另一种浮层窗口的实现方法,是在窗口中实现浮层窗口,而避免由于浮层窗口的全局实现而对界面的显示造成干扰。

但是,也存在着一定的问题,即窗口中实现的浮层窗口,无法全屏幕拖动,由此极大的限制了浮层窗口的交互性能。

综上所述,移动终端中浮层窗口的实现,亟待解决其在实现上受限于权限且无法全屏幕拖动的缺陷。



技术实现要素:

为了解决相关技术中存在的浮层窗口的实现受限于权限且无法全屏幕拖动的技术问题,本公开提供了一种窗口显示控制方法和装置。

一种窗口显示控制方法,所述方法包括:

接收应用中进行浮层窗口显示的指令;

根据所述指令配置所述浮层窗口属性得到存放所述浮层窗口属性的布局信息,所述布局信息中窗口类型配置为对话框类型;

获取应用窗口的窗口令牌,并在所述布局信息中指定获取的所述窗口令牌为所述浮层窗口的令牌值;

通过所述布局信息在所述应用窗口中显示所述浮层窗口。

一种窗口显示控制装置,所述装置包括:

指令接收模块,用于接收应用中进行浮层窗口显示的指令;

布局信息获得模块,用于根据指令配置浮层窗口属性得到存放浮层窗口属性的布局信息,布局信息中窗口类型配置为对话框类型;

令牌获取模块,用于获取应用窗口的窗口令牌,并在布局信息中指定获取的窗口令牌为浮层窗口的令牌值;

显示模块,用于通过所述布局信息在所述应用窗口中显示所述浮层窗口。

本公开的实施例提供的技术方案可以包括以下有益效果:

为仅在应用中实现浮层窗口的显示,接收应用中进行浮层窗口显示的指令,根据指令配置浮层窗口属性得到存放浮层窗口属性的布局信息,布局信息中窗口类型被配置为对话框类型,获取应用窗口的窗口令牌,并在布局信息中指定获取的窗口令牌为浮层窗口的令牌值,通过布局信息在应用窗口中显示浮层窗口,由此,将不需要申请权限,使得浮层窗口的实现不再受限于权限,此外,由于浮层窗口的令牌值被指定为应用窗口的窗口令牌,使得浮层窗口是依附于应用窗口存在的,并且其窗口类型为对话框类型,保证了浮层窗口在应用窗口的层次之上进行显示,也在浮层窗口属性的作用下保证浮层窗口的全屏幕拖动。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种装置的框图;

图2是根据一示例性实施例示出的一种窗口显示方法的流程图;

图3是根据图2对应实施例示出的对获取应用窗口的窗口令牌,并在布局信息中指定获取的窗口令牌为浮层窗口的令牌值步骤的细节进行描述的流程图;

图4是根据图3对应实施例示出的对从应用中被运行的活动组件获得应用窗口的窗口令牌步骤的细节进行描述的流程图;

图5是根据另一示例性实施例示出的一种窗口显示控制方法的流程图;

图6是根据一个示例性实施例示出的浮层窗口实现的时序示意简略图;

图7是根据一示例性实施例示出的一种窗口显示控制装置的框图;

图8是根据图7对应实施例示出的令牌获取模块的细节进行描述的流程图;

图9是根据图7对应实施例示出的令牌获取执行单元的细节进行描述的框图;

图10是根据另一示例性实施例示出的一种窗口显示控制装置的框图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种装置100的框图。例如,装置100可以是移动终端,例如,智能手机等。

参照图1,装置100可以包括以下一个或多个组件:处理组件102,存储器104,电源组件106,多媒体组件108,音频组件110,传感器组件114以及通信组件116。

处理组件102通常控制装置100的整体操作,诸如与显示,电话呼叫,数据通信,相机操作以及记录操作相关联的操作等。处理组件102可以包括一个或多个处理器118来执行指令,以完成下述的方法的全部或部分步骤。此外,处理组件102可以包括一个或多个模块,便于处理组件102和其他组件之间的交互。例如,处理组件102可以包括多媒体模块,以方便多媒体组件108和处理组件102之间的交互。

存储器104被配置为存储各种类型的数据以支持在装置100的操作。这些数据的示例包括用于在装置100上操作的任何应用程序或方法的指令。存储器104可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储器104中还存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器118执行,以完成下述图2、图3、图4和图5任一所示方法中的全部或者部分步骤。

电源组件106为装置100的各种组件提供电力。电源组件106可以包括电源管理系统,一个或多个电源,及其他与为装置100生成、管理和分配电力相关联的组件。

多媒体组件18包括在所述装置100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。屏幕还可以包括有机电致发光显示器(oled)。

音频组件110被配置为输出和/或输入音频信号。例如,音频组件110包括一个麦克风(mic),当装置100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器104或经由通信组件116发送。在一些实施例中,音频组件110还包括一个扬声器,用于输出音频信号。

传感器组件114包括一个或多个传感器,用于为装置100提供各个方面的状态评估。例如,传感器组件114可以检测到装置100的打开/关闭状态,组件的相对定位,传感器组件114还可以检测装置100或装置100一个组件的位置改变以及装置100的温度变化。在一些实施例中,该传感器组件114还可以包括磁传感器,压力传感器或温度传感器。

通信组件116被配置为便于装置100和其他设备之间有线或无线方式的通信。装置100可以接入基于通信标准的无线网络,如wifi。在一个示例性实施例中,通信组件116经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件116还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,装置100可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法。

图2是根据一示例性实施例示出的一种窗口显示方法的流程图。该窗口显示控制方法适用于图1所示的装置100。该窗口显示控制方法,如图2所示,可以包括以下步骤。

在步骤210中,接收应用中进行浮层窗口显示的指令。

其中,所指的应用,可以是移动终端中运行的任一应用,此移动终端,为搭载了android操作系统的终端。应用在移动终端的运行,有对应的应用窗口,以实现此应用的显示。在此应当说明的是,应用窗口,泛指于此应用的任一窗口,包括依附于一窗口的子窗口,而并不是一个特定的窗口。

浮层窗口是指浮出显示于最上层的窗口。应用运行中随着其应用窗口被创建或激活,都将触发生成应用中进行浮层窗口显示的指令。

在接收到应用中进行浮层窗口显示的指令即可执行应用中浮层窗口的实现过程。

在步骤230中,根据指令配置浮层窗口属性得到存放浮层窗口属性的布局信息,布局信息中窗口类型配置为对话框类型。

其中,每一窗口的实现,都有其所对应的窗口属性,通过窗口属性来保证相应窗口的布局和显示。对于当前所进行的浮层窗口创建而言,相对应的,也需要进行浮层窗口属性的配置,进而得到存放了浮层窗口属性的布局信息。

在一个示例性实施例中,浮层窗口属性包括窗口类型、长宽、背景、显示位置。在后续所进行的浮层窗口显示中,随着浮层窗口的移动,其显示位置将随之发生变化。具体而言,布局信息即为windowmanager.layoutparams,浮层窗口属性将作为windowmanager.layoutparams中的参数存在。

在本发明的浮层窗口实现中,将浮层窗口的窗口类型配置为对话框类型,即type_application_attached_dialog,也即浮层窗口实质为对话框。

通过操作系统默认支持的浮层窗口实现机制而实现的浮层窗口,因为用到的是系统窗口,所以需要申请权限,进而使得浮层窗口的实现受限于权限。

而对话框类型的窗口,是不需要申请权限的窗口。另一方面的,应用窗口中窗口类型为面板窗口类型,即type_application_panel,是应用中显示层次最高的子窗口。在此情况下将浮层窗口配置为对话框类型的窗口,能够保证所实现的浮层窗口是显示中任一应用窗口之上,由此,既巧妙的绕开了权限问题创建出浮层窗口,又保证了浮层窗口的显示层次高于应用内的任一应用窗口。

基于此,浮层窗口作为单独一个窗口而存在于应用窗口之上随意移动,保证了浮层窗口不会对应用的原有功能造成干扰。

在步骤250中,获取应用窗口的窗口令牌,并在布局信息中指定获取的窗口令牌为浮层窗口的令牌值。

其中,窗口令牌,一方面用于标示其所属的活动组件,另一方面,对于子窗口而言,其标识了所归属的父窗口,并且对于ipc(inter-processcommunication,进程间通信)调用的实现,也是通过窗口令牌所在应用窗口指向的驱动对象(binder对象),以便于窗口管理服务能够通过此驱动对象来实现窗口的ipc调用。

在布局信息中指定浮层窗口的令牌值为应用窗口的窗口令牌,将使得浮层窗口在显示上是依附于应用窗口而存在的。获取的窗口令牌所对应的应用窗口,是应用当前激活的应用窗口,由此,便保证了浮层窗口是在应用当前激活以切换到前面显示的应用窗口之上的。

在步骤270中,通过布局信息在应用窗口中显示浮层窗口。

其中,通过布局信息可以得到浮层窗口的视图,即view,将此视图添加到窗口管理接口函数(windowmanager)即可实现应用窗口之上浮层窗口的显示。

由此可知,步骤270,其具体过程为:通过布局信息获得浮层窗口的视图,并且获取窗口管理接口函数,将浮层窗口的视图添加至窗口管理接口函数即可实现应用窗口中浮层窗口的浮出显示。

可以理解的,窗口管理接口函数中封装了将视图添加至屏幕的方法,即addview方法,因此,对其所进行的视图添加便可以实现屏幕中的窗口显示,即浮层窗口的显示。

通过如上所述的过程,在移动终端中的应用窗口上以窗口的形式实现浮层,一方面,利用了系统本身的机制而不需要申请权限,另一方面,所实现的浮层窗口与应用窗口不在同一层,避免了相互干扰的可能性。

另外,通过如上所述的过程可知,浮层窗口是通过普通的视图添加实现的,由此将使得浮层窗口具备与普通视图一样的功能,例如,动画实现的功能和随意移动的功能,进而使得浮层窗口能够在全屏幕随意移动。

图3是根据图2对应实施例示出的对步骤250的细节进行描述的流程图。该步骤250,如图3所示,可以包括以下步骤。

在步骤251中,从应用中被运行的活动组件获得应用窗口的窗口令牌。

其中,应用中活动组件的启动和运行用于实现应用中应用窗口的显示,每一个活动组件,有一个或多个视图。例如,当其仅对应了一个应用窗口的显示时,相应活动组件有一个视图;但是如果对应了多个应用窗口的显示,即父窗口和子窗口的显示,则相应活动组件有多个视图。

应用中,应用窗口的创建和激活是通过运行的活动组件实现的,而窗口令牌对于后续所创建的浮动窗口而言,指示了其所依附的应用窗口,即后续所创建的浮动窗口为当前应用窗口的子窗口,因此,其令牌值即为当前应用窗口的窗口中令牌,并且相应的活动组件获得。

在步骤253中,将窗口令牌指定为布局信息中浮层窗口的令牌值。

其中,在布局信息中实现浮层窗口令牌值的赋值,即布局信息中浮层窗口的令牌值在数值上即为所获得的窗口令牌。

在一个示例性实施例的具体实现中,通过执行mlayoutparams.token=token语句即可实现浮层窗口的令牌值的指定。

图4是根据图3对应实施例示出的对步骤251的细节进行描述的流程图。该步骤251,如图4所示,可以包括以下步骤。

在步骤2511,监听应用中活动组件的生命周期,获得应用窗口被创建或激活的活动组件。

在步骤2513,从应用窗口被创建或激活的活动组件获得应用窗口的窗口令牌。

其中,可以理解的,应用中浮层窗口的实现,是基于已经被创建或激活而切换到前台的应用窗口的,因此,浮层窗口只有在应用创建或者激活了应用窗口是存在,如果此应用切换到后台运行或者退出运行,则也不存在此应用的浮层窗口显示。

基于此,需要进行应用中活动组件的生命周期监听。如前所述的,活动组件是用于实现应用窗口的,例如,创建或者激活应用窗口。一活动组件启动之后,在其运行过程中将会执行相应应用窗口的创建或激活。

因此,通过应用中活动组件的生命周期的监听,来获得应用窗口被创建或激活的活动组件。

在一个示例性实施例的具体实现中,将利用系统的特性来实现应用中活动组件的生命周期监听。

具体的,所指的系统特性是activitylifecyclecallbacks接口,此接口中的实现模式是观察者模式,可以监听应用内所有活动组件的生命周期。

在具体实现中,只需要注册监听即可。当活动组件在执行窗口创建,例如执行oncreate方法,或激活,如执行onresume方法时,从此活动组件获取窗口令牌。

通过如上所述的过程,为浮层窗口的创建中令牌值的获得提供了具体实现,进而通过获得的应用窗口的窗口令牌直接赋值即可完成浮层窗口的令牌值配置。

活动组件的生命活动周期监听的实现,由于是系统本身所提供的,因此,可以在不增加代码的情况下,实现浮层窗口的代码和应用内其它代码的隔离,功能互不影响,却可以增加浮层窗口的功能,实现了浮层窗口的非侵入式设计,进而避免了应用中功能的不确定性,以及应用中功能的不确定性而引发的应用崩溃,使得增加了浮层窗口功能应用运行稳定可靠。

图5是根据另一示例性实施例示出的一种窗口显示控制方法的流程图。该窗口显示控制方法,如图5所示,在步骤270之后,还包括以下步骤。

在步骤310中,在应用窗口被销毁或切换至后台之后,通过进行的活动组件监听获得活动组件的应用窗口被销毁或被切换至后台的监听结果。

在步骤330中,根据监听结果触发判断应用中是否存在应用窗口被创建或激活的活动组件,如果为否,则进入步骤350,如果为是,则返回步骤250。

在步骤350中,根据监听结果销毁浮层窗口。

其中,通过图3对应实施例实现了应用内应用窗口之上的浮层窗口显示,对于随着所依附的应用窗口而显示的浮层窗口而言,将随着此应用窗口的销毁或者切换至后台,也就是说,在屏幕当前的显示中移除此应用窗口,此时,浮层窗口所依附的应用窗口不再存在,因此,浮层窗口将不得不销毁,屏幕当前的显示中相应移除浮层窗口。

在应用中浮层窗口的显示中,持续进行活动组件的监听,在监听到原本进行显示的应用窗口被活动组件销毁或切换至后台,例如,活动组件执行了ondestroy方法,以销毁显示的应用窗口,或者执行onpause方法,以将显示的应用窗口切换至后台,此时,如果应用中不存在其它活动组件执行应用窗口的创建或者激活,则只能销毁浮层窗口,在屏幕的显示中移除浮层窗口。

在当前显示的应用窗口被相应活动组件销毁或者切换至后台时,如果应用中存在其它活动组件创建应用窗口或激活应用窗口,则返回步骤250,通过执行步骤250而从其它活动组件获得窗口令牌,并指定为浮层窗口的布局信息中的令牌值,此时即可使得通过布局信息在显示的浮层窗口是其它活动组件的应用窗口的子窗口,依附于其它活动组件的应用窗口。

通过此过程,将使得应用的窗口显示的全过程都能够实现浮层窗口的显示,也就是说,应用中,只要存在窗口显示,便会进行浮层窗口的显示。

在移动终端运行应用的过程中,因为总有一个活动组件存在,所以浮层窗口也会一直显示。

在另一个示例性实施例中,步骤350之后,该窗口显示控制方法,还包括以下步骤。

在应用窗口被切换至后台之后,持续进行应用中活动组件的生命周期监听,并获得应用窗口被重新激活的监听结果。

根据应用窗口被重新激活的监听结果触发执行步骤250,以使得由后台切换至前台的应用能够进行浮层窗口的显示。

其中,如前所述的,随着应用切换至后台,其显示的应用窗口也被随之切换至后台,对于依附于应用窗口的浮层窗口而言,将被销毁而从屏幕中移除。

此时,对于仍然运行的应用而言,应用中活动组件的生命周期监听仍然进行,以便于能够及时监听到应用中应用窗口的重新激活,进而方能随着应用窗口切换到前面而及时实现浮层窗口的显示。

具体的,随着应用又由后台重新切换至前台,应用窗口也将被切换到前台,即活动组件将执行onresume方法,以重新激活,此时将会监听到此活动组件正激活窗口,输出相应的监听结果。

图6是根据一个示例性实施例示出的浮层窗口实现的时序示意简略图。如图6所示的,对于应用中浮层窗口的实现,将是通过应用的activity实现的。

具体的,在activity执行oncreate方法或onresume方法时,即执行步骤1时,实现了应用窗口的显示,而此应用窗口对于浮层窗口而言,是作为父窗口存在的,activity对于浮层窗口而言,也是作为父窗口activity存在的。

此时,执行步骤2,传入父窗口activity的token值,即应用窗口的窗口令牌,其一方面唯一标识了应用窗口,另一方面也唯一标识了activity。

对于浮层窗口的创建,获得了应用窗口的窗口令牌之后即可显示浮层窗口。

父窗口activity,如果执行步骤3,即执行ondestroy方法,或者onpause方法,以销毁父窗口或将其切换至后台,则会将token值为空,即null,并传入,此时,浮层窗口将从屏幕中移除。

下述为本公开装置实施例,可以用于执行本公开上述窗口显示控制方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开窗口显示控制方法实施例。

图7是根据一示例性实施例示出的一种窗口显示控制装置的框图。该窗口显示控制装置,如图7所示,包括但不限于:指令接收模块510、布局信息获得模块530、令牌获取模块550和显示模块570。

指令接收模块510,用于接收应用中进行浮层窗口显示的指令。

布局信息获得模块530,用于根据指令配置浮层窗口属性得到存放浮层窗口属性的布局信息,布局信息中窗口类型配置为对话框类型。

令牌获取模块550,用于获取应用窗口的窗口令牌,并在布局信息中指定获取的窗口令牌为浮层窗口的令牌值。

显示模块570,用于通过布局信息在应用窗口中显示浮层窗口。

图8是根据图7对应实施例示出的令牌获取模块的细节进行描述的流程图。该令牌获取模块550,如图8所示,可以包括但不限于:令牌获取执行单元551和令牌传入单元553。

令牌获取执行单元551,用于从应用中被运行的活动组件获得应用窗口的窗口令牌。

令牌传入单元553,用于将窗口令牌指定为布局信息中浮层窗口的令牌值。

图9是根据图7对应实施例示出的令牌获取执行单元的细节进行描述的框图。该令牌获取执行单元551,如图9所示,包括但不限于:生命周期监听子单元5511和窗口令牌获得子单元5513。

生命周期监听子单元5511,用于监听应用中活动组件的生命周期,获得应用窗口被创建或激活的活动组件。

窗口令牌获得子单元5513,用于从应用窗口被创建或激活的活动组件获得应用窗口的窗口令牌。

图10是根据另一示例性实施例示出的一种窗口显示控制装置的框图。该窗口显示控制装置,如图10所示,包括但不限于:活动组件监听模块710、判断模块730和浮层销毁模块750。

活动组件监听模块710,用于在应用窗口被销毁或切换至后台之后,通过进行的活动组件监听获得活动组件的应用窗口被销毁或被切换至后台的监听结果;

判断模块730,用于根据监听结果触发判断应用中是否存在应用窗口被创建或激活的活动组件,如果为否,则通知浮层销毁模块750,如果为是,则触发令牌获取模块550。

浮层销毁模块750用于根据监听结果销毁浮层窗口。

在另一个示例性实施例中,该窗口显示控制装置,还包括持续监听模块。

持续监听模块,用于在应用窗口被切换至后台之后,持续进行应用中活动组件的生命周期监听,并获得应用窗口被重新激活的监听结果,根据监听结果触发令牌获取模块。

可选的,本公开还提供一种移动终端,该移动终端可以是图1所示装置,执行图2、图3、图4和图5任一所示的窗口显示控制方法的全部或者部分步骤。所述装置包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行:

接收应用中进行浮层窗口显示的指令;

根据所述指令配置所述浮层窗口属性得到存放所述浮层窗口属性的布局信息,所述布局信息中窗口类型配置为对话框类型;

获取应用窗口的窗口令牌,并在所述布局信息中指定获取的所述窗口令牌为所述浮层窗口的令牌值;

通过所述布局信息在所述应用窗口中显示所述浮层窗口。

该实施例中的装置的处理器执行操作的具体方式已经在有关该窗口显示控制方法的实施例中执行了详细描述,此处将不做详细阐述说明。

在示例性实施例中,还提供了一种存储介质,该存储介质为计算机可读存储介质,例如可以为包括指令的临时性和非临时性计算机可读存储介质。该存储介指例如包括指令的存储器204,上述指令可由装置200的处理器218执行以完成上述窗口显示控制方法。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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