一种智能终端的悬浮按钮的控制方法及装置与流程

文档序号:11138967阅读:278来源:国知局
一种智能终端的悬浮按钮的控制方法及装置与制造工艺

本发明涉及智能终端技术领域,特别涉及一种智能终端的悬浮按钮的控制方法及装置。



背景技术:

随着智能终端使用的普及,为了操作便利,越来越多的用户会选择在自己使用的智能终端尤其是智能手机上安装一些诸如EasyTouch或虚拟按键大师等应用,这些应用能够通过悬浮按钮和悬浮窗的方式为用户提供大量便捷、可靠的操作,例如:向用户提供快捷的联系人界面,用户通过单手就可以调出常用联系人信息;也可以向用户提供常用的应用列表,使用户可以快速跳转到需要的应用;还可以提供很多系统设置功能,如手电筒、蓝牙开关、wifi、移动网络、调节音量大小和调节屏幕亮度等,从而使得用户非常热衷于使用虚拟按键,相应地减少用户对系统按键的使用,进而延长系统按键甚至手机的使用寿命。

在实际使用中,悬浮按钮在给用户带来便利的同时,也给用户带来了一定的困扰。例如,用户在全屏浏览图片时,或者在全屏观看视频时,或者在全屏玩游戏等全屏状态下,悬浮按钮会一直显示在屏幕上,从而影响到用户的全屏使用体验。为了降低对全屏使用体验的影响,用户往往通过将悬浮按钮拖动到不显眼的地方,或者通过对悬浮按钮的透明度进行设置,使得其以半透明状态进行显示等,但是这些操作都需要用户手动干预,智能化程度较低,并且由于悬浮按钮依旧显示在屏幕上,并未从根本上解决问题,用户使用体验并不理想。

为了提升智能化程度,现有技术中还提供了一种终端屏幕的悬浮按钮控制方法,包括:判断终端屏幕是否处于交互状态;若终端屏幕处于交互状态,则将悬浮按钮置于屏幕显示范围以内;否则将悬浮按钮置于屏幕显示范围以外;或者,判断终端屏幕是否处于交互状态;若终端屏幕处于交互状态,则在终端屏幕上生成悬浮按钮;否则删除终端屏幕上的悬浮按钮。

通过分析可知,以上技术方案通过判断屏幕是否处于“交互状态”,来控制悬浮按钮的显示位置、生成或者删除,其中“交互状态”应该理解为当前屏幕获得焦点,用户可以进行操作,而智能终端在处于全屏状态时也可以认为处于“交互状态”,则此时会将悬浮按钮“置于屏幕显示范围以内”,依然无法解决影响用户使用体验的问题。此外,通过判断屏幕是否处于“交互状态”来生成悬浮按钮或者删除悬浮按钮,成本较高,需要窗口管理器(Windows Manager)不断addView和removeView,频繁申请和释放系统资源,系统开销增大,容易增加程序出错的风险。

针对现有技术中智能终端处于全屏状态下,悬浮按钮影响用户使用体验的问题,并未找到有效的解决方案。



技术实现要素:

本发明提供一种智能终端的悬浮按钮的控制方法及装置,在监听到显示窗口由非全屏状态切换到全屏状态后,能够智能化地控制悬浮按钮进行隐藏,从而有效提升用户的全屏使用体验。

一方面,本发明提供一种智能终端的悬浮按钮的控制方法,包括:

监听智能终端显示屏上的显示窗口的高度;

在监听到所述显示窗口的高度发生变化后,判断所述显示窗口是否发生全屏状态与非全屏状态之间的切换;

在判断所述显示窗口发生全屏状态与非全屏状态之间的切换后,判断所述显示窗口是由非全屏状态切换到全屏状态,还是由全屏状态切换到非全屏状态;

在判断所述显示窗口由非全屏状态切换到全屏状态后,控制所述智能终端显示屏上的悬浮按钮进行隐藏;在判断所述显示窗口由全屏状态切换到非全屏状态后,控制所述智能终端显示屏上的悬浮按钮进行显示。

优选的,在判断所述显示窗口由非全屏状态切换到全屏状态后,所述方法还包括:

判断所述显示窗口是否为首次由非全屏状态到全屏状态的切换;

在判断所述显示窗口为首次由非全屏状态到全屏状态的切换后,向用户弹出对话框,以根据所述用户对所述对话框中选项的选择,确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏;

在判断所述显示窗口为非首次由非全屏状态到全屏状态的切换后,根据上次发生非全屏状态到全屏状态切换时,用户对弹出的对话框中选项的选择记录,确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏,或者重新向用户弹出对话框,以使所述用户重新进行选择。

优选的,所述对话框中包括以下多项内容:确定隐藏悬浮按钮提示、隐藏悬浮按钮的更改位置提示、允许选项、取消选项以及下次不再提醒选项;

所述确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏,包括:

判断所述用户是否在智能终端系统设置中将优先级别最高的允许悬浮按钮隐藏选项关闭;在判断所述用户将所述允许悬浮按钮隐藏选项关闭后,则无论用户如何对所述对话框中的选项进行操作,始终保持所述悬浮按钮显示,不对所述智能终端显示屏上的悬浮按钮进行隐藏;

在判断所述用户未将所述允许悬浮按钮隐藏选项关闭后,则:

在接收到所述用户选择取消选项后,继续保持所述悬浮按钮显示,不对所述智能终端显示屏上的悬浮按钮进行隐藏;在接收到所述用户选择允许选项后,对所述悬浮按钮进行隐藏;

在接收到所述用户选择取消选项或允许选项后,判断所述用户是否选择下次不再提醒选项;在判断所述用户选择下次不再提醒选项后,则执行与所述用户选择的取消选项或允许选项对应的显示或者隐藏操作持续有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,不再向用户弹出对话框供用户重新选择;在判断所述用户未选择下次不再提醒选项后,则执行与所述用户选择的取消选项或允许选项对应的显示或者隐藏操作对本次操作有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,重新向用户弹出对话框供用户重新选择。

优选的,在监听智能终端显示屏上的显示窗口的高度之前,所述方法还包括:

启动服务进程,在所述服务进程内嵌的控件中创建悬浮按钮;

创建显示窗口监听器,并将所述显示窗口监听器的高度设置为等于所述智能终端的显示屏的高度、宽度设置为0,将所述显示窗口监听器的格式设置为透明,通过窗口管理器的添加视图函数将所述窗口监听器添加到所述智能终端显示屏的显示窗口中。

优选的,所述方法还包括:在将所述悬浮按钮进行隐藏后,在信息通知栏中创建提醒所述悬浮按钮隐藏以及点击恢复的提醒信息,以使所述用户在点击所述提醒信息后,在所述智能终端的显示屏上恢复所述悬浮按钮的显示。

另一方面,本发明提供一种智能终端的悬浮按钮的控制装置,包括:

监听模块,用于监听智能终端显示屏上的显示窗口的高度;

第一判断模块,用于在所述监听模块监听到所述显示窗口的高度发生变化后,判断所述显示窗口是否发生全屏状态与非全屏状态之间的切换;

第二判断模块,用于在所述第一判断模块判断所述显示窗口发生全屏状态与非全屏状态之间的切换后,判断所述显示窗口是由非全屏状态切换到全屏状态,还是由全屏状态切换到非全屏状态;

控制模块,用于在所述第二判断模块判断所述显示窗口由非全屏状态切换到全屏状态后,控制所述智能终端显示屏上的悬浮按钮进行隐藏,还用于在所述第二判断模块判断所述显示窗口由全屏状态切换到非全屏状态后,控制所述智能终端显示屏上的悬浮按钮进行显示。

优选地,所述装置还包括:

第三判断模块,用于在所述第二判断模块判断所述显示窗口由非全屏状态切换到全屏状态后,判断所述显示窗口是否为首次由非全屏状态到全屏状态的切换;

弹框模块,用于在第三判断模块判断所述显示窗口为首次由非全屏状态到全屏状态的切换时,向用户弹出对话框;

第一确定模块,用于根据所述用户对所述对话框中选项的选择,确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏;

第二确定模块,用于当所述第三判断模块判断所述显示窗口为非首次由非全屏状态到全屏状态的切换时,根据上次发生非全屏状态到全屏状态切换时,用户对弹出的对话框中选项的选择记录,确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏,或者重新向用户弹出对话框,以使所述用户重新进行选择。

优选地,所述对话框中包括以下多项内容:确定隐藏悬浮按钮提示、隐藏悬浮按钮的更改位置提示、允许选项、取消选项以及下次不再提醒选项;

所述第一确定模块,包括:

第一判断单元,用于判断所述用户是否在智能终端系统设置中将优先级别最高的允许悬浮按钮隐藏选项关闭;

第一显示及隐藏单元,用于在所述判断单元判断所述用户将所述允许悬浮按钮隐藏选项关闭后,无论用户如何对所述对话框中的选项进行操作,始终保持所述悬浮按钮显示,不对所述智能终端显示屏上的悬浮按钮进行隐藏;

第二显示及隐藏单元,用于在判断所述用户未将所述允许悬浮按钮隐藏选项关闭后,且在接收到所述用户选择取消选项后,继续保持所述悬浮按钮显示,不对所述智能终端显示屏上的悬浮按钮进行隐藏;还用于在判断所述用户未将所述允许悬浮按钮隐藏选项关闭后,且在接收到所述用户选择允许选项后,对所述悬浮按钮进行隐藏;

第二判断单元,用于在接收到所述用户选择取消选项或允许选项后,判断所述用户是否选择下次不再提醒选项;

执行单元,用于在所述第二判断单元判断所述用户选择下次不再提醒选项后,执行与所述用户选择的取消选项或允许选项对应的显示或者隐藏操作持续有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,不再向用户弹出对话框供用户重新选择;还用于在所述第二判断单元判断所述用户未选择下次不再提醒选项后,执行与所述用户选择的取消选项或允许选项对应的显示或者隐藏操作对本次操作有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,重新向用户弹出对话框供用户重新选择。

优选地,所述装置还包括:

第一创建模块,用于在监听智能终端显示屏上的显示窗口的高度之前,启动服务进程,并在所述服务进程内嵌的控件中创建悬浮按钮;

第二创建模块,用于创建显示窗口监听器,并将所述显示窗口监听器的高度设置为等于所述智能终端的显示屏的高度、宽度设置为0,将所述显示窗口监听器的格式设置为透明,通过窗口管理器的添加视图函数将所述窗口监听器添加到所述智能终端显示屏的显示窗口中。

优选地,所述装置还包括:

第三创建模块,用于在将所述悬浮按钮进行隐藏后,在信息通知栏中创建提醒所述悬浮按钮隐藏以及点击恢复的提醒信息,以使所述用户在点击所述提醒信息后,在所述智能终端的显示屏上恢复所述悬浮按钮的显示。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例提供的一种智能终端的悬浮按钮的控制方法的流程图;

图2为本发明实施例提供的一种智能终端的悬浮按钮的控制装置的框图;

图3为本发明实施例提供的一种悬浮按钮的示意图;

图4为本发明实施例提供的一种对话框的示意图;

图5是本发明实施例提供的一种点击恢复提醒信息的示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

以下对本专利申请中使用的名词或术语解释如下:

悬浮按钮:移动设备在开启之后,屏幕当中出现一个圆形或者其它图片形式的虚拟按钮,它可以随意拖动到屏幕上的任意位置,并且可以悬浮于大多数的应用界面之上。

Android:中文名称为安卓,是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。

本发明实施例提供的一种智能终端的悬浮按钮的控制方法,包括以下步骤S101-S104:

步骤S101:监听智能终端显示屏上的显示窗口的高度;

步骤S102:在监听到所述显示窗口的高度发生变化后,判断显示窗口是否发生全屏状态与非全屏状态之间的切换;

步骤S103:在判断显示窗口发生全屏状态与非全屏状态之间的切换后,判断显示窗口是由非全屏状态切换到全屏状态,还是由全屏状态切换到非全屏状态;

步骤S104:在判断显示窗口由非全屏状态切换到全屏状态后,控制智能终端显示屏上的悬浮按钮进行隐藏;在判断显示窗口由全屏状态切换到非全屏状态后,控制智能终端显示屏上的悬浮按钮进行显示。

在另外一个实施例中,如图4所示,在判断显示窗口由非全屏状态切换到全屏状态后,上述智能终端的悬浮按钮的控制方法,还包括:

步骤S1:判断显示窗口是否为首次由非全屏状态到全屏状态的切换;

步骤S2:在判断显示窗口为首次由非全屏状态到全屏状态的切换后,向用户弹出对话框,以根据用户对对话框中选项的选择,确定是否对智能终端显示屏上的悬浮按钮进行隐藏;

步骤S3:在判断显示窗口为非首次由非全屏状态到全屏状态的切换后,根据上次发生非全屏状态到全屏状态切换时,用户对弹出的对话框中选项的选择记录,确定是否对智能终端显示屏上的悬浮按钮进行隐藏,或者重新向用户弹出对话框,以使用户重新进行选择。

在一个实施例中,上述对话框中可以包括以下多项内容:确定隐藏悬浮按钮提示、隐藏悬浮按钮的更改位置提示、允许选项、取消选项以及下次不再提醒选项;其中,上述确定是否对所述智能终端显示屏上的悬浮按钮进行隐藏,包括:

步骤S11:判断用户是否在智能终端系统设置中将优先级别最高的允许悬浮按钮隐藏选项关闭;在判断用户将允许悬浮按钮隐藏选项关闭后,则无论用户如何对所述对话框中的选项进行操作,始终保持悬浮按钮显示,不对智能终端显示屏上的悬浮按钮进行隐藏;

步骤S12:在判断用户未将允许悬浮按钮隐藏选项关闭后,则:

步骤S13:在接收到用户选择取消选项后,继续保持悬浮按钮显示,不对智能终端显示屏上的悬浮按钮进行隐藏;在接收到用户选择允许选项后,对悬浮按钮进行隐藏;

步骤S14:在接收到用户选择取消选项或允许选项后,判断用户是否选择下次不再提醒选项;在判断用户选择下次不再提醒选项后,则执行与用户选择的取消选项或允许选项对应的显示或者隐藏操作持续有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,不再向用户弹出对话框供用户重新选择;在判断用户未选择下次不再提醒选项后,则执行与用户选择的取消选项或允许选项对应的显示或者隐藏操作对本次操作有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,重新向用户弹出对话框供用户重新选择。

在另外一个实施例中,在监听智能终端显示屏上的显示窗口的高度之前,上述智能终端的悬浮按钮的控制方法还包括:

步骤S22:启动服务进程,在服务进程内嵌的控件中创建悬浮按钮;

步骤S23:创建显示窗口监听器,并将显示窗口监听器的高度设置为等于智能终端的显示屏的高度、宽度设置为0,将显示窗口监听器的格式设置为透明,通过窗口管理器的添加视图函数将窗口监听器添加到智能终端显示屏的显示窗口中。

在一个实施例中,如图5所示,上述智能终端的悬浮按钮的控制方法,还可以包括:在将悬浮按钮进行隐藏后,在信息通知栏中创建提醒悬浮按钮隐藏以及点击恢复的提醒信息,以使用户在点击所述提醒信息后,在智能终端的显示屏上恢复悬浮按钮的显示。

以下将对本发明实施例提供的智能终端的悬浮按钮的控制方法的实现过程进行详细说明如下:

通过悬浮按钮所在的服务进程(Service进程)创建一个窗口监听器,可以对窗口的高度进行监听,一旦有变化就会做出响应。这个监听器的父类其实是一个View,在其被创建后,会将其添加到窗口管理器中,使这个View高度等于屏幕高度,宽度等于0,这样它是不能被用户所看到,但是它可以监听到窗口高度的变化。

在这个监听器收到窗口变化时,会触发其onSizeChanged方法,在其方法内部,判断当前view的高度是否等于屏幕高度screenHeight,如果相等,说明由非全屏状态变化到了全屏状态;如果触发onSizeChanged方法时,当前高度并不等于屏幕高度,则判断一下当时是否进行了横竖屏切换,即onConfigurationChanged方法有没有触发,如果没有,并且保存的旧view高度等于屏幕高度,说明是由全屏状态切换到了正常状态,即非全屏状态;

在view的监听器中,如果确定全屏和非全屏状态发生了切换,将通过Handler给Service进程发送消息,由Service进程进行消息处理。

这里将分几种情况进行处理:

1、如果是第一次运行程序,将会首先创建一个对话框和用户进行交互,提示是否对悬浮按钮进行隐藏,如果未勾选“下次不再提示”,选择了“取消”,悬浮按钮将继续显示,不会隐藏;如果选择了“允许”,本次将隐藏悬浮按钮。如果勾选了“下次不再提示”,这时选择了“取消”,以后将永远不再隐藏悬浮按钮,并且也不再提醒用户;如选择了“允许”,以后每次出现全屏情况时,都将立即隐藏悬浮按钮,并且也不再提醒用户。

2、如果不是第一次运行程序,之前弹出过图4这样的提示框,并且没有勾选过“下次不再提示”,这次将会继续弹出这个提示框。

3、如果之前操作勾选了“下次不再提示”,并且点击了“允许”,将直接隐藏悬浮按钮;

4、如果之前操作勾选了“下次不再提示”,并且点击了“取消”,将继续显示悬浮按钮,全屏切换对按钮没有影响;

5、如果将“全屏自动隐藏”开关关闭,则在客户端进程中,无论屏幕如何切换,或者如何操作,都将继续显示悬浮按钮。

在本实施例中,悬浮按钮如果进行了隐藏,会发送一个通知到通知栏,在通知栏里有这样一个条通知,如图5所示,“xxx在这里,点击返回屏幕”,如果此时点击此条通知,会将悬浮按钮显示出来。

如果当前悬浮按钮已经隐藏,并且由全屏切换到非全屏,此时悬浮按钮将由通知栏中自动显示到屏幕上,并且会将之前创建的通知取消掉。通过上述步骤,就实现了在屏幕切换全屏和非全屏时,悬浮按钮的隐藏和显示功能。

为实现上述目的,本发明提供了详细的利用屏幕全屏和非全屏的变化,控制悬浮按钮自动隐藏和显示的方法,其实现步骤如下:

程序启动:悬浮按钮所在的应用在安装后需要启动才能运行。

启动一个Service进程:我们使用一个Android Service来对悬浮按钮进行管理和逻辑控制,并且将其放到一个单独进程中,这是因为Service可以在后台始终保持运行,具有不容易被杀死,不需要可视化界面支持的优点,并且在手机系统重启后,还可以通过本地注册的系统广播消息,例如,手机启动的广播,网络状态变化的广播,蓝牙状态变化,WiFi状态变化等等,一般的系统类的广播消息都可以将其启动起来,生命力非常强,所以选择Service作为实现悬浮按钮的载体。

创建悬浮按钮,按钮进入待机状态,监听点击事件:悬浮按钮寄存在一个RelativeLayout控件之内,其自身是由一个ImageView控件实现的,利用系统WindowManager(窗口管理器)的addView方法添加到管理器中。通过设置其LayoutParams的type的属性为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,来实现悬浮于大多数应用窗口之上的。因为TYPE_SYSTEM_ALERT代表一个非常高的优先级,设置这个值,就可以使悬浮按钮的优先级大于其他大部分窗口,在显示时,自然就会处于其它窗口之上。同时给悬浮按钮设置单击,长按,双击,移动等的监听事件,悬浮按钮在收到不同的事件后,会进行不同的处理。如单击悬浮按钮,会打开悬浮窗,进行虚拟按键功能的使用,同时隐藏悬浮按钮。

创建一个屏幕监听器FloatMonitor:在Service进程中创建一个屏幕监听器FloatMonitor,FloatMonitor的父类是一个View,我们在其创建时,将其高度height设置为屏幕的高度,宽度width设置为0,同时format设置为PixelFormat.TRANSPARENT,即透明的,这样其对于用户来说是不可见的,但是它却可以监听高度的变化,然后通过WindowManager的addView函数将其添加到当前活动窗口区中。

FloatMonitor进入待机状态,监听屏幕变化:在创建了屏幕窗口监听器FloatMonitor后,需要重写其onSizeChanged方法,在窗口高度有变化时,会回调到此方法中,这样在其onSizeChanged方法中就可以根据之前保存的窗口值和现在的窗口高度值作比对,来判断窗口是如何进行变化的。为了区分终端横屏和竖屏的切换,同时需要重写其onConfigurationChanged方法,这个方法在屏幕进行横竖屏切换时会回调到此方法中。在此方法中,可以判断和记录当前是由横屏转成竖屏,还是竖屏转成横屏,这样对于判断屏幕全屏和非全屏的转换起到辅助作用。

屏幕状态发生变化,判断屏幕是否由非全屏状态切换到全屏状态:屏幕状态发生变化,会回调到onSizeChanged方法中,通过此方法参数中的h值与屏幕高度screenHeight作比较,如果相等,说明当前变化到了全屏状态;如果这两个值不相等,则认为是从全屏状态退出到了非全屏状态。

状态未发生变化,继续待机监听;如果发生其他情况的变化,则进行其他功能逻辑处理:这里分两种情况,一种是屏幕状态未发生改变,将继续保持FloatMonitor的监听状态;如果发生了变化,但不是从非全屏进入到全屏,如,两种非全屏状态的变化。典型例子如打开输入法时和关闭输入法时,这两种状态也会引起回调方法onSizeChanged的执行。此时我们会进行其它方面的逻辑处理,然后再次进入到屏幕监听状态。

FloatMonitor通过Handler发送消息给Service处理:收到窗口变化时,并不在FloatMonitor中处理消息,而是将其放到UI主线程中进行处理,我们可以通过FloatMonitor中的Handler发送自定义消息MSG_FULL_SCREEN_CHANGE给Service进行处理。因为涉及到UI操作,放到主线程中能保证流程的安全执行。而UI操作如果放到子线程中运行将会导致程序崩溃。

Service收到消息,在UI主线程进行处理:Service在收到MSG_FULL_SCREEN_CHANGE消息后,会根据消息带的参数,来选择不同程序分支进行执行。

判断全屏隐藏的开关是否为打开状态:在执行功能前,首先使用isFullScreenHideEnable方法判断全屏隐藏的开关是否打开了,因为此功能由一个开关进行控制,用户可以在应用程序中进行设置,如果开关关闭说明此应用不起作用,此时可以对隐藏不予响应;如果开关为开,可以继续向下执行程序。

全屏隐藏功能关闭,继续进行监听:全屏隐藏功能开关如果关闭,说明用户不希望在全屏时隐藏悬浮按钮,因此此时将直接返回到FloatMonitor继续监听屏幕状态,因为后续用户可能会将此开关重新打开。悬浮按钮保持显示状态。

判断“下次不再提示”标志值是否为true:全屏隐藏功能开关为打开,则需要判断“下次不再提示”标志值no_hint_forever是否为true,在程序第一次启动,默认状态是false的,即在弹出提示框时,默认是不勾选“下次不再提示”的,需要用户自己根据需要进行选择。

说明不是首次操作,选择隐藏悬浮按钮:“下次不再提示”标志值no_hint_forever为true,说明之前弹出提示框后,用户勾选了“下次不再提示”复选框,将会直接隐藏悬浮按钮。

创建并弹出选择提示框:“下次不再提示”标志值no_hint_forever为false,说明上次未勾选“下次不再提示”复选框,或者首次运行程序,这时需要创建并弹出提示框。

提示框内容包括一个复选框“下次不再提示”,两个按钮,“取消”和“允许”:提示款是一个普通的Android提示框,如图3所示,有标题,描述,和一个“下次不再提示”的复选框,以及两个按钮,“取消”和“允许”。

如果选择复选框“下次不再提示”,将其标志置为true,否则为false:选择复选框,程序会将标志no_hint_forever置为true,表示后续不要再弹出此框了;去掉选择或者不选择复选框,则会将标志no_hint_forever置为false,表示后续在收到全屏变化的消息后还要再次弹出此框。

判断提示框点击的是“取消”,还是“允许”:用户需要点击取消,或者允许才能关闭此提示框,选择“取消”表示不隐藏悬浮按钮;选择“允许”表示隐藏悬浮按钮。

悬浮按钮不隐藏,FloatMonitor继续进行监听:点击取消后,将不隐藏悬浮按钮,程序进入继续监听状态,悬浮按钮继续显示,等待按键事件的处理。

点击允许,选择隐藏悬浮按钮:点击允许,说明用户希望隐藏悬浮按钮,将进入到隐藏流程。

创建并发送通知Notification,立即隐藏悬浮按钮:在隐藏悬浮按钮流程中,首先会创建一个通知消息Notification,并将其发送到通知栏。通知创建完毕后,则使用setVisibility(View.GONE)方法将悬浮按钮进行隐藏;

悬浮按钮隐藏,同时在通知栏给出点击还原的提示信息:此时悬浮按钮进入隐藏状态,展开通知栏会看到一条通知,显示悬浮按钮已经隐藏,点击此条通知可以进行还原。但是Service进程没有关闭,会继续进行运行,同时监听屏幕变化的监听器FloatMonitor也会继续工作,如监听屏幕是否从全屏又变化到了非全屏等。

以上是由非全屏状态变化到全屏状态时,悬浮按钮的隐藏处理流程,下面说一下由全屏状态变化到非全屏状态,悬浮按钮的显示处理流程,详细的步骤如下所示:

悬浮按钮隐藏:悬浮按钮处于隐藏状态。

FloatMonitor处于待机状态,监听屏幕变化:监听屏幕变化:在其回调onSizeChanged方法中处理屏幕变化的消息。一旦有屏幕发生变化,将回调到onSizeChanged方法中。

屏幕状态发生变化,判断屏幕是否由全屏状态切换到非全屏状态:屏幕状态发生变化,会回调到onSizeChanged方法中,通过此方法参数中的h值与屏幕高度screenHeight作比较,如果这两个值不相等,则认为是从全屏状态退出到了非全屏状态。在此过程中需要将横竖屏切换的情况排除掉,可以利用onConfigurationChanged方法是否被回调来进行区分。

状态未发生变化,继续待机监听;如果发生其它情况的变化,则进行其它方方面的功能逻辑处理:这里分两种情况,一种是屏幕状态未发生改变,将继续保持FloatMonitor的监听状态;如果发生了变化,但不是从全屏进入到非全屏,如,两种非全屏的状态的变化。典型例子如打开输入法时和关闭输入法时,这两种状态也会引起回调方法onSizeChanged的执行。此时我们会进行其他逻辑的处理,然后再次进入到屏幕监听状态。

FloatMonitor通过Handler发送消息给Service处理:收到窗口变化时,并不在FloatMonitor中处理消息,而是将其放到UI主线程中进行处理,我们可以通过在FloatMonitor中的Handler发送消息MSG_FULL_SCREEN_CHANGE给Service进行处理。因为涉及到操作UI,放到主线程中能保证流程的正确执行。

Service收到消息,在UI主线程进行处理:Service在收到MSG_FULL_SCREEN_CHANGE消息后,会根据消息带的参数,来选择不同程序分支进行执行。

判断悬浮按钮是否是由窗口变化隐藏的:判断当前的悬浮按钮隐藏原因是否是由窗口变化引起的,因为悬浮按钮隐藏并不是只有此一种方式,还可以通过手动长按悬浮按钮或者其它方式来实现隐藏。

可能是其他原因引起的悬浮按钮隐藏,此时需要继续进入监听状态,处理其他窗口变化逻辑:如果是其他原因导致的悬浮按钮隐藏,此时将不对其进行处理,不会将其显示出来。继续进入到待机监听状态。

显示悬浮按钮,同时取消掉通知栏中的通知:如果判断是通过窗口变化隐藏的悬浮按钮,此时将会调用setVisibility(View.VISIBLE)方法将悬浮按钮显示出来,同时将通知栏中的通知取消掉。

悬浮按钮显示:悬浮按钮进入显示状态,开始监听按键事件,响应用户的输入。

在悬浮按钮隐藏到通知栏后,除了通过窗口变化将其重新显示以外,还可以通过手动的方式,将其显示出来,具体实现步骤如下:

悬浮按钮处于隐藏状态,Service进程继续后台运行(也即,程序依然活着),只是悬浮按钮临时进行了隐藏,可以通过点击此通知可以将悬浮按钮进行显示。判断用户是否手动点击了此通知,如果未点击通知,悬浮按钮将一直保持隐藏,进入到Service待机状态;如果用户点击通知,我们并不判断之前是由于何种原因进行了隐藏,点击通知,将会触发悬浮按钮进行显示,同时清除通知栏中的此条通知,悬浮按钮进入显示状态,开始监听按键事件,响应用户的输入。

本发明实施例提供的智能终端的悬浮按钮的控制方法,通过监听智能终端显示屏上的显示窗口的高度;在监听到显示窗口的高度发生变化后,判断显示窗口是否发生全屏状态与非全屏状态之间的切换;在判断显示窗口发生全屏状态与非全屏状态之间的切换后,判断显示窗口是由非全屏状态切换到全屏状态,还是由全屏状态切换到非全屏状态;在判断显示窗口由非全屏状态切换到全屏状态后,控制智能终端显示屏上的悬浮按钮进行隐藏;在判断显示窗口由全屏状态切换到非全屏状态后,控制智能终端显示屏上的悬浮按钮进行显示。该方法在监听到显示窗口由非全屏状态切换到全屏状态后,能够智能化地控制悬浮按钮进行隐藏,从而有效提升用户的全屏使用体验,智能化程度高,且不消耗内存及电量资源。

本发明实施例另外提供一种智能终端的悬浮按钮的控制装置,如图2所示,包括:

监听模块201,用于监听智能终端显示屏上的显示窗口的高度;

第一判断模块202,用于在监听模块201监听到显示窗口的高度发生变化后,判断显示窗口是否发生全屏状态与非全屏状态之间的切换;

第二判断模块203,用于在第一判断模块202判断显示窗口发生全屏状态与非全屏状态之间的切换后,判断显示窗口是由非全屏状态切换到全屏状态,还是由全屏状态切换到非全屏状态;

控制模块204,用于在第二判断模块203判断显示窗口由非全屏状态切换到全屏状态后,控制智能终端显示屏上的悬浮按钮进行隐藏,还用于在第二判断模块203判断显示窗口由全屏状态切换到非全屏状态后,控制智能终端显示屏上的悬浮按钮进行显示。

在另外一个实施例中,上述智能终端的悬浮按钮的控制装置,还包括:

第三判断模块,用于在第二判断模块203判断显示窗口由非全屏状态切换到全屏状态后,判断显示窗口是否为首次由非全屏状态到全屏状态的切换;

弹框模块,用于在第三判断模块判断显示窗口为首次由非全屏状态到全屏状态的切换时,向用户弹出对话框;

第一确定模块,用于根据用户对对话框中选项的选择,确定是否对智能终端显示屏上的悬浮按钮进行隐藏;

第二确定模块,用于当第三判断模块判断显示窗口为非首次由非全屏状态到全屏状态的切换时,根据上次发生非全屏状态到全屏状态切换时,用户对弹出的对话框中选项的选择记录,确定是否对智能终端显示屏上的悬浮按钮进行隐藏,或者重新向用户弹出对话框,以使用户重新进行选择。

在本发明提供的另外一个实施例中,向用户弹出的话框中可以包括以下多项内容:确定隐藏悬浮按钮提示、隐藏悬浮按钮的更改位置提示、允许选项、取消选项以及下次不再提醒选项;其中,上述第一确定模块,包括:

第一判断单元,用于判断用户是否在智能终端系统设置中将优先级别最高的允许悬浮按钮隐藏选项关闭;

第一显示及隐藏单元,用于在判断单元判断用户将允许悬浮按钮隐藏选项关闭后,无论用户如何对对话框中的选项进行操作,始终保持悬浮按钮显示,不对智能终端显示屏上的悬浮按钮进行隐藏;

第二显示及隐藏单元,用于在判断用户未将允许悬浮按钮隐藏选项关闭后,且在接收到用户选择取消选项后,继续保持悬浮按钮显示,不对智能终端显示屏上的悬浮按钮进行隐藏;还用于在判断用户未将允许悬浮按钮隐藏选项关闭后,且在接收到用户选择允许选项后,对悬浮按钮进行隐藏;

第二判断单元,用于在接收到用户选择取消选项或允许选项后,判断用户是否选择下次不再提醒选项;

执行单元,用于在第二判断单元判断用户选择下次不再提醒选项后,执行与用户选择的取消选项或允许选项对应的显示或者隐藏操作持续有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,不再向用户弹出对话框供用户重新选择;还用于在第二判断单元判断用户未选择下次不再提醒选项后,执行与用户选择的取消选项或允许选项对应的显示或者隐藏操作对本次操作有效,且在后续发生显示窗口由非全屏状态到全屏状态的切换时,重新向用户弹出对话框供用户重新选择。

上述智能终端的悬浮按钮的控制装置,还包括:

第一创建模块,用于在监听智能终端显示屏上的显示窗口的高度之前,启动服务进程,并在服务进程内嵌的控件中创建悬浮按钮;

第二创建模块,用于创建显示窗口监听器,并将显示窗口监听器的高度设置为等于智能终端的显示屏的高度、宽度设置为0,将显示窗口监听器的格式设置为透明,通过窗口管理器的添加视图函数将窗口监听器添加到智能终端显示屏的显示窗口中。

在另外一个实施例中,上述智能终端的悬浮按钮的控制装置,还包括:

第三创建模块,用于在将悬浮按钮进行隐藏后,在信息通知栏中创建提醒悬浮按钮隐藏以及点击恢复的提醒信息,以使用户在点击所述提醒信息后,在智能终端的显示屏上恢复所述悬浮按钮的显示。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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