著录项信息
专利名称 | 一种悬浮窗显示方法及装置 |
申请号 | CN201110082707.8 | 申请日期 | 2011-04-01 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-08-17 | 公开/公告号 | CN102156615A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F3/0481 | IPC分类号 | G;0;6;F;3;/;0;4;8;1查看分类表>
|
申请人 | 奇智软件(北京)有限公司 | 申请人地址 | 北京市西城区新街口外大街28号D座112室(德胜园区)
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 | 当前权利人 | 北京奇虎科技有限公司,奇智软件(北京)有限公司 |
发明人 | 王智源 |
代理机构 | 北京国昊天诚知识产权代理有限公司 | 代理人 | 许志勇 |
摘要
本发明公开了一种悬浮窗显示方法及装置,其中所述方法包括:监测指定窗体的显示状态;根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现。本发明引入了智能检测机制,根据窗体的显示状态关联地控制悬浮窗,并根据用户的需要判断展示时机。
1.一种悬浮窗显示方法,其特征在于,包括:
建立指定窗体与悬浮窗之间的关联关系;
监测所述指定窗体的显示状态;所述显示状态,是所述指定窗体在当前桌面的可见状态;
根据所述指定窗体的显示状态控制与所述指定窗体存在关联关系的所述悬浮窗的展现,包括:
如果监测到在当前桌面指定窗体可见,则在当前桌面上不展现与所述指定窗体存在关联关系的悬浮窗;和/或
如果监测到在当前桌面指定窗体不可见,则在当前桌面上展现与所述指定窗体存在关联关系的悬浮窗;
当检测到所述悬浮窗被点击时,将所述指定窗体置于顶层显示并不再展现所述悬浮窗。
2.如权利要求1所述的方法,其特征在于,还包括:
检测在当前桌面上是否存在窗体激活、窗体拖动、窗体最小化和/或窗体尺寸改变的操作;
如果存在,则进一步检测所述指定窗体的显示状态。
3.如权利要求1所述的方法,其特征在于,
所述指定窗体,包括:所述指定窗体的全部资源的呈现部分,和/或,所述指定窗体的主体资源的呈现部分;所述悬浮窗,为置于Z顺序的顶层的窗口,其显示尺寸不遮挡当前桌面的主体显示内容。
4.如权利要求1所述的方法,其特征在于,还包括:
当检测到所述指定窗体处于最小化状态时,判定所述指定窗体不可见,展现所述悬浮窗。
5.如权利要求1所述的方法,其特征在于,还包括:
当检测到所述指定窗体移动到一当前桌面以外的其他桌面上进行显示时,判定在当前桌面上所述指定窗体不可见,在当前桌面上展现所述悬浮窗。
6.如权利要求1所述的方法,其特征在于,还包括:
当检测到所述指定窗体的被遮挡部分大于等于一门限时,判定所述指定窗体不可见,展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分小于所述门限时,判定所述指定窗体可见,不展现所述悬浮窗。
7.如权利要求6所述的方法,其特征在于,还包括:
识别桌面上打开的顶级窗体,判断所述指定窗体与所述顶级窗体的Z顺序;
如果不存在Z顺序排在所述指定窗体之前的顶级窗体,则判定所述指定窗体未被遮挡;如果存在Z顺序排在所述指定窗体之前的一个或多个顶级窗体,则检测所述指定窗体与所述顶级窗体是否存在重叠关系;
如果不存在重叠关系,则判定所述指定窗体未被遮挡;如果存在重叠关系,则说明所述指定窗体被遮挡,根据所述顶级窗体与指定窗体的桌面坐标,获取所述指定窗体被所述顶级窗体共同遮挡的部分。
8.如权利要求1所述的方法,其特征在于,
所述悬浮窗,默认显示为透明状态或半透明状态,每当检测到鼠标移动到所述悬浮窗上时,切换至不透明状态。
9.如权利要求1所述的方法,其特征在于,
记录所述悬浮窗停止展现的位置,下一次默认在所述位置上展现所述悬浮窗。
10.如权利要求1所述的方法,其特征在于,当所述指定窗体为多个时,所述方法还包括:
根据每个所述指定窗体的显示状态控制与每个所述指定窗体存在关联关系的所述悬浮窗的展现。
11.如权利要求1所述的方法,其特征在于,当所述指定窗体为多个时,所述方法还包括:
根据每个所述指定窗体的当前的显示状态判断出需要展示所述悬浮窗的指定窗体,依据优先级的排列顺序,获取所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体,展现与所述指定窗体关联的悬浮窗;
所述优先级的排列顺序,包括:用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序、和/或最近一次被激活的先后设定优先级顺序。
12.一种悬浮窗显示装置,其特征在于,包括:
关联模块,用于建立指定窗体与悬浮窗之间的关联关系;
监测模块,用于监测所述指定窗体的显示状态,所监测的所述显示状态是指定窗体在当前桌面的可见状态;
控制模块,用于根据所述指定窗体的显示状态控制与所述指定窗体存在关联关系的所述悬浮窗的展现,包括:
如果监测到在当前桌面指定窗体可见,则在当前桌面上不展现与所述指定窗体存在关联关系的悬浮窗;和/或
如果监测到在当前桌面指定窗体不可见,则在当前桌面上展现与所述指定窗体存在关联关系的悬浮窗;
所述控制模块,进一步用于当检测到所述悬浮窗被点击时,将所述指定窗体置于顶层显示并不再展现所述悬浮窗。
13.如权利要求12所述的装置,其特征在于,
所述控制模块,进一步用于当检测到所述指定窗体处于最小化状态时,判定所述指定窗体不可见,展现所述悬浮窗;当检测到所述指定窗体移动到一当前桌面以外的其他桌面上进行显示时,判定在当前桌面上所述指定窗体不可见,在当前桌面上展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分大于等于一门限时,判定所述指定窗体不可见,展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分小于所述门限时,判定所述指定窗体可见,不展现所述悬浮窗。
14.如权利要求12所述的装置,其特征在于,还包括:
监测模块,用于监测一个或多个所述指定窗体的显示状态;
所述控制模块,还用于根据每个指定窗体的显示状态控制与每个指定窗体存在关联关系的所述悬浮窗的展现。
15.如权利要求12所述的装置,其特征在于,
所述监测模块,用于监测多个所述指定窗体的显示状态;
所述控制模块,用于根据每个指定窗体的当前的显示状态判断出需要展示所述悬浮窗的指定窗体,依据优先级的排列顺序,获取所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体,展现与所述指定窗体关联的悬浮窗;所述优先级的排列顺序,包括:用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序、和/或最近一次被激活的先后设定优先级顺序。
一种悬浮窗显示方法及装置\n技术领域\n[0001] 本发明属于计算机领域,具体地说,涉及一种悬浮窗显示方法及装置。\n背景技术\n[0002] 有些下载软件比如网际快车、网络蚂蚁、迅雷等等都有显示下载状态的悬浮窗。这些悬浮窗的作用在于当主程序的窗口在最小化时,还可以提示用户看到下载状态,并可以通过点击这些小窗口,快捷的打开主程序的窗口。\n[0003] 由于悬浮窗与所述主程序界面的设置是相对独立,两者的开启互不关联,悬浮窗的开启和隐藏缺乏智能检测机制,也就造成以下诸多缺陷。\n[0004] 1)悬浮窗一旦打开,除非手动关闭,否则其始终会在桌面的Z顺序的顶层显示。在很多已明显不需要悬浮窗的情况下,悬浮窗依然会保持在桌面的Z顺序的顶层显示。由于悬浮窗的遮挡,会影响用户使用其他软件;在用户体验方面会造成用户的厌恶,导致用户排斥悬浮窗功能。\n[0005] 例如,在主程序的界面已正常打开甚至已最大化的情况下,此时已明显不需要悬浮窗,但是由于悬浮窗与所述主程序的设置是相对独立,悬浮窗并不能因为主程序的最大化而关联地进行调整,因此悬浮窗依然保持在桌面的Z顺序的顶层显示,极大地影响了用户使用其他软件。\n[0006] 2)由于悬浮窗无法根据用户的需要判断显示时机,而是一旦打开始终会在桌面的Z顺序的顶层显示,所以很多用户选择将悬浮窗永久关闭。这样在用户需要悬浮窗进行提示时,由于悬浮窗已永久关闭,而无法智能地出现,也将给用户带来了不方便。\n[0007] 例如,在主程序的界面被最小化时或者被遮挡时,此时如果存在悬浮窗提示,会给用户带来很好的体验,但是由于前述悬浮窗所带来的不便致使用户将其永久关闭,所以在需要的时候悬浮窗无法出现也给用户带来了不方便。而造成这种不便的原因,归根结底还是由于开启的悬浮窗不具有智能检测机制,无法根据用户的需要判断出显示时机而适宜地出现。\n发明内容\n[0008] 有鉴于此,本发明所要解决的技术问题是提供了一种悬浮窗显示方法及装置,引入了智能检测机制,根据窗体的显示状态关联地控制悬浮窗,并根据用户的需要判断展示时机。\n[0009] 为了解决上述技术问题,本发明公开了一种悬浮窗显示方法,包括:监测指定窗体的显示状态;根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现。\n[0010] 进一步地,监测指定窗体的显示状态的步骤,包括:检测在当前桌面上是否存在窗体激活、窗体拖动、窗体最小化和/或窗体尺寸改变的操作;如果存在,则进一步检测指定窗体的显示状态。\n[0011] 进一步地,所述显示状态,是所述指定窗体在当前桌面的可见状态;根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:如果在当前桌面所述指定窗体可见,则在当前桌面上不展现所述悬浮窗;如果在当前桌面所述指定窗体不可见,则在当前桌面上展现所述悬浮窗。\n[0012] 进一步地,所述指定窗体,包括:所述指定窗体的全部资源的呈现部分,和/或,所述指定窗体的主体资源的呈现部分;所述悬浮窗,为置于Z顺序的顶层的窗口,其显示尺寸不遮挡当前桌面的主体显示内容。\n[0013] 进一步地,当所述显示状态包括最小化状态时,根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:当检测到所述指定窗体处于最小化状态时,判定所述指定窗体不可见,展现所述悬浮窗。\n[0014] 进一步地,当所述显示状态包括新桌面显示状态时,根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:当检测到所述指定窗体移动到一当前桌面以外的其他桌面上进行显示时,判定在当前桌面上所述指定窗体不可见,在当前桌面上展现所述悬浮窗。\n[0015] 进一步地,当所述显示状态包括被遮挡状态时,根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:当检测到所述指定窗体的被遮挡部分大于等于一门限时,判定所述指定窗体可见,展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分小于所述门限时,判定所述指定窗体不可见,不展现所述悬浮窗。\n[0016] 进一步地,当检测到所述悬浮窗被点击时,将所述指定窗体置于Z顺序的顶层显示并不再展现所述悬浮窗。\n[0017] 进一步地,当所述显示状态包括被遮挡状态时,监测指定窗体的显示状态的步骤,包括:识别桌面上打开的顶级窗体,判断所述指定窗体与所述顶级窗体的Z顺序;如果不存在Z顺序排在所述指定窗体之前的顶级窗体,则判定所述指定窗体未被遮挡;如果存在Z顺序排在所述指定窗体之前的一个或多个顶级窗体,则检测所述指定窗体与所述顶级窗体是否存在重叠关系;如果不存在重叠关系,则判定所述指定窗体未被遮挡;如果存在重叠关系,则说明所述指定窗体被遮挡,根据所述顶级窗体与指定窗体的桌面坐标,获取所述指定窗体被所述顶级窗体共同遮挡的部分。\n[0018] 进一步地,所述悬浮窗,默认显示为透明状态或半透明状态,每当检测到鼠标移动到所述悬浮窗上时,切换至不透明状态。\n[0019] 进一步地,记录所述悬浮窗停止展现的位置,下一次默认在所述位置上展现所述悬浮窗。\n[0020] 进一步地,当所述指定窗体为多个时,根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:根据每个指定窗体的显示状态控制与每个指定窗体关联的悬浮窗的展现。\n[0021] 进一步地,当所述指定窗体为多个时,根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现的步骤,包括:根据每个指定窗体的当前的显示状态判断出需要展示所述悬浮窗的指定窗体,获取所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体,展现与所述指定窗体关联的悬浮窗;所述优先级的排列顺序,包括:用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序、和/或最近一次被激活的先后设定优先级顺序。\n[0022] 为了解决上述技术问题,本发明公开了一种悬浮窗显示装置,包括:监测模块,用于监测指定窗体的显示状态;控制模块,用于根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现。\n[0023] 进一步地,所述监测模块,所监测的显示状态是所述指定窗体在当前桌面的可见状态;所述控制模块,进一步用于在当前桌面所述指定窗体可见时,在当前桌面上不展现所述悬浮窗;在当前桌面所述指定窗体不可见时,在当前桌面上展现所述悬浮窗。\n[0024] 进一步地,所述控制模块,进一步用于当检测到所述指定窗体处于最小化状态时,判定所述指定窗体不可见,展现所述悬浮窗;当检测到所述指定窗体移动到一当前桌面以外的其他桌面上进行显示时,判定在当前桌面上所述指定窗体不可见,在当前桌面上展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分大于等于一门限时,判定所述指定窗体可见,展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分小于所述门限时,判定所述指定窗体不可见,不展现所述悬浮窗。\n[0025] 进一步地,所述监测模块,用于监测多个指定窗体的显示状态;所述控制模块,还用于根据每个指定窗体的显示状态控制与每个指定窗体关联的悬浮窗的展现。\n[0026] 进一步地,所述监测模块,用于监测多个指定窗体的显示状态;所述控制模块,用于根据每个指定窗体的当前的显示状态判断出需要展示所述悬浮窗的指定窗体,获取所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体,展现与所述指定窗体关联的悬浮窗;所述优先级的排列顺序,包括:用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序、或最近一次被激活的先后设定优先级顺序。\n[0027] 进一步地,所述监测模块,用于检测在当前桌面上是否存在窗体激活、窗体拖动、窗体最小化和/或窗体尺寸改变的操作,如果存在,则进一步检测指定窗体的显示状态。\n[0028] 进一步地,所述指定窗体,包括:所述指定窗体的全部资源的呈现部分,和/或,所述指定窗体的主体资源的呈现部分;所述悬浮窗,为置于Z顺序的顶层的窗口,其显示尺寸不遮挡当前桌面的主体显示内容。\n[0029] 进一步地,所述控制模块,还用于当检测到所述悬浮窗被点击时,将所述指定窗体置于Z顺序的顶层显示并不再展现所述悬浮窗。\n[0030] 进一步地,所述监测模块,包括:识别单元,用于识别桌面上打开的顶级窗体,判断所述指定窗体与所述顶级窗体的Z顺序;检测单元,当存在Z顺序排在所述指定窗体之前的一个或多个顶级窗体时,用于检测所述指定窗体与所述顶级窗体是否存在重叠关系;获取单元,当存在所述重叠关系时,根据所述顶级窗体与指定窗体的桌面坐标,获取所述指定窗体被所述顶级窗体共同遮挡的部分。\n[0031] 进一步地,所述控制模块,还用于控制所述悬浮窗默认显示为透明状态或半透明状态,每当检测到鼠标移动到所述悬浮窗上时,切换至不透明状态。\n[0032] 进一步地,所述控制模块,还用于记录所述悬浮窗停止展现的位置,下一次默认在所述位置上展现所述悬浮窗。\n[0033] 与现有的方案相比,本发明所获得的技术效果:\n[0034] 1)为悬浮窗的开启和隐藏提供了一种智能检测机制,其将悬浮窗与窗体建立关联关系,根据窗体的显示状态关联地控制悬浮窗;\n[0035] 2)可以根据用户的需要判断展示时机,并在适宜时机进行展示,给用户带来方便而又不会使用户厌烦;在很多已明显不需要悬浮窗的情况,例如:主程序的界面已正常打开甚至已最大化的情况下,悬浮窗可以智能检测并不展示悬浮窗;在需要悬浮窗进行提示的情况,例如:在主程序的界面被最小化时或者被遮挡时,悬浮窗可以智能检测并展示悬浮窗;\n[0036] 3)当在全屏显示的某窗体的后面被遮挡多个指定窗体时,如果希望快速切换至这些指定窗体,本发明为被遮挡的指定窗体提供一种快速切换的入口,方便用户快捷地调出需要的窗体;\n[0037] 4)当所述指定窗体为多个时,如果这些指定窗体同时被遮挡,它们的悬浮窗会策略性地开启,针对最近一次激活的指定窗体提供悬浮窗,这样在方便用户快捷地调出窗体的同时,避免过多的悬浮窗影响用户使用其他软件。\n附图说明\n[0038] 图1为本发明实施例的方法流程图;\n[0039] 图2为本发明一应用实例的第一示意图;\n[0040] 图3为本发明一应用实例的第二示意图;\n[0041] 图4为本发明一应用实例的第三示意图;\n[0042] 图5为本发明又一应用实例的第一示意图;\n[0043] 图6为本发明又一应用实例的第二示意图;\n[0044] 图7为本发明又一应用实例的第三示意图;\n[0045] 图8为本发明实施例的装置结构图。\n具体实施方式\n[0046] 以下将配合图式及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。\n[0047] 本发明的核心构思在于:监测指定窗体的显示状态;根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现。\n[0048] 具体来说,如果在当前桌面所述指定窗体可见,则在当前桌面上不展现所述悬浮窗;如果在当前桌面所述指定窗体不可见,则在当前桌面上展现所述悬浮窗。\n[0049] 所述展现,可以包括但不限于:1)根据需要实时生成所述悬浮窗并开启显示,例如:悬浮窗的画面选用隐藏时的截图来实时生成,或者根据视频播放的情况生成动态的迷你视频窗口等等;2)调用已生成的所述悬浮窗并开启显示;3)在所述悬浮窗开启的状态下,将所述悬浮窗显示,例如:原本悬浮窗工作在隐藏状态,现在则显现在桌面上。\n[0050] 所述显示状态,是所述指定窗体在当前桌面的可见状态,包括但不限于:被遮挡状态、最小化状态和/或新桌面显示状态;被遮挡状态,表示指定窗体是否被遮挡或者被遮挡的程序;最小化状态表示指定窗体是否最小化;新桌面显示状态,表示指定窗体是否被移动至新的桌面,例如两个屏幕完全独立输出的双屏显示,或者一个屏幕作主屏,另一个屏幕作水平或垂直扩展的扩展模式下,将当前屏幕下的指定窗体拖动到另一屏幕时,即视为移动至新的桌面。\n[0051] 所述悬浮窗,为置于Z顺序的顶层的窗口,其显示尺寸以不遮挡当前桌面的主体显示内容为限。所述悬浮窗可以是用于所述指定窗体在当前桌面进行全部显示的激活入口,和/或,所述指定窗体表现内容的缩略展示,例如:悬浮窗的画面选用隐藏时的截图来实时生成,或者根据视频播放的情况生成动态的迷你视频窗口等等。\n[0052] 所述指定窗体可以为一个或多个;所述指定窗体,包括:顶级窗体和/或其下层的子窗体,其中,顶级窗体为一指定窗体的全部资源的呈现部分,子窗体为该指定窗体的主体资源的呈现部分,当然可以是其他区域资源的呈现部分,例如,视频播放程序的整体界面和其中播放视频的窗口、网页浏览器的整体界面和显示网页的窗口、网页新闻页面中的整体界面和除去广告等内容以外的文字部分等。\n[0053] 另外,考虑到指定窗体的资源的呈现部分并不一定按窗体进行划分,因此,所述指定窗体,也可以包括:所述指定窗体的全部资源的呈现部分、所述指定窗体的主体资源的呈现部分、和/或其他区域资源的呈现部分。\n[0054] 对于每一个指定窗体,此时其他指定窗体也可以影响该指定窗体的显示状态;当一个窗体的显示状态变化了和多个窗体的显示状态同时变化时,从使用的角度会带来不同技术效果:\n[0055] A)智能关联--当所述指定窗体为一个时,关联的悬浮窗可以根据指定窗口的状态适宜地展现,给用户带来方便而又不会使用户厌烦;\n[0056] B)快速入口--当所述指定窗体为多个时,根据每个指定窗体的显示状态控制与每个指定窗体关联的悬浮窗的展现;如果这些指定窗体的显示状态同时发生变化,将它们中需要展现的悬浮窗同时展现,这样对这些指定窗体视同提供一种快速切换的入口,可以方便用户快捷地调出需要的窗体;\n[0057] C)策略开启--当所述指定窗体为多个时,根据每个指定窗体的当前的显示状态判断出需要展示所述悬浮窗的指定窗体,获取所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体,展现与所述指定窗体关联的悬浮窗;所述优先级的排列顺序,包括:用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序、或最近一次被激活的先后设定优先级顺序。如果这些指定窗体的显示状态同时发生变化,它们的悬浮窗会策略性地开启,针对最近一次激活的指定窗体提供悬浮窗,这样在方便用户快捷地调出窗体的同时,避免过多的悬浮窗影响用户使用其他软件。\n[0058] 在本说明书中会以两个不同的应用实例对以上效果进行描述。\n[0059] 此处再进行一个术语解释。Z顺序(Z-order)即桌面上图像的层次关系,可以理解为先后遮挡顺序。Z顺序越大或者越靠前,即表示对应的图像在和别的图像叠加时展现在前面。\n[0060] 以下以一实施例对本发明的方法进行说明。如图1所示,执行如下操作:\n[0061] 步骤S11,实时或周期监测指定窗体的显示状态是否发生变化,如果显示状态可能发生改变,执行步骤S12、S16、S18,否则,返回执行步骤S11;\n[0062] 具体而言,实时或周期检测在当前桌面上是否存在窗体激活、窗体拖动、窗体最小化或窗体尺寸改变的操作,如果存在,说明窗体的显示状态有可能发生改变,检测指定窗体的显示状态,此时执行步骤S12;\n[0063] 对于窗体激活的触发,例如,如果存在窗体激活,即点击某一窗体将其在桌面的Z顺序的顶层进行显示,此时这一窗体就有可能将指定窗体遮挡;如果这一窗体就是指定窗体且之前是被遮挡状态,指定窗体必然由原来被遮挡的状态变为未被遮挡。此时指定窗体的被遮挡状态有可能发生变化。\n[0064] 对于窗体拖动的触发,例如,如果存在窗体拖动,即将某一窗体点击拖动至一新位置并将其在桌面的Z顺序的顶层进行显示,此时这一窗体被拖动至新位置就有可能将指定窗体遮挡,也有可能将指定窗体由遮挡状态暴露出来;如果这一窗体就是指定窗体且之前是被遮挡状态,指定窗体必然由原来被遮挡的状态变为未被遮挡。另外,在双屏显示的情况下,如果存在窗体拖动也有可能是由当前桌面移动到新桌面,此时指定窗体的新桌面显示状态发生变化。\n[0065] 对于窗体尺寸改变的触发,例如,如果存在窗体尺寸改变,即将某一窗体拉大或者拉小至一新的尺寸并将其在桌面的Z顺序的顶层进行显示,此时这一窗体的新尺寸就有可能将指定窗体遮挡,也有可能将指定窗体由遮挡状态暴露出来;如果这一窗体就是指定窗体且之前是被遮挡状态,指定窗体必然由原来被遮挡的状态变为未被遮挡。此时指定窗体的被遮挡状态有可能发生变化。\n[0066] 对于窗体最小化的触发,例如,如果存在窗体被点击最小化,有可能是将指定窗体由遮挡状态暴露出来,也有可能是将指定窗口最小化,此时指定窗体的被遮挡状态或最小化状态有可能发生变化。\n[0067] 步骤S12,检测指定窗体的被遮挡状态;\n[0068] 本步骤具体包括:1)识别桌面上打开的顶级窗体,判断所述指定窗体与所述顶级窗体的Z顺序;2)如果存在Z顺序排在所述指定窗体之前的一个或多个顶级窗体,则检测所述指定窗体与所述顶级窗体是否存在重叠关系;3)如果存在重叠关系,则说明所述指定窗体被所述顶级窗体中的一个或者多个遮挡,根据所述顶级窗体与指定窗体的桌面坐标(X,Y),获取所述指定窗体被一个或者多个所述顶级窗体遮挡的部分(即为面积或比例,本发明并不限于此),注意当多个所述顶级窗体遮挡时,要计算所述顶级窗体组合起来对所述指定窗体共同的遮挡部分。\n[0069] 上述1)中,如果不存在Z顺序排在所述指定窗体之前的顶级窗体,则说明所述指定窗体置于Z顺序的顶层显示,不会被遮挡,被遮挡的部分为0;上述2)中,如果所述指定窗体与所述顶级窗体不存在重叠关系,则说明所述指定窗体未被所述顶级窗体遮挡,被遮挡的部分为0。\n[0070] 步骤S 13,将所述指定窗体被遮挡的部分与一门限比较,根据比较结果,控制与所述指定窗体关联的悬浮窗;\n[0071] 当检测到所述指定窗体的被遮挡的部分大于等于所述门限时,判定所述指定窗体可见,执行步骤S15;当检测到所述指定窗体的被遮挡的部分小于所述门限时,判定所述指定窗体不可见,执行步骤S14。\n[0072] 步骤S14,不展现所述悬浮窗,返回执行步骤S11;\n[0073] 如果在上一时刻悬浮窗没有展现,即指定窗体的被遮挡的部分小于所述门限;则在当前时刻,继续保持不对所述悬浮窗进行展现;如果在上一时刻悬浮窗处于展现状态,即指定窗体的被遮挡的部分大于等于所述门限;则在当前时刻,停止对悬浮窗进行展现。\n[0074] 步骤S15,展现所述悬浮窗并置于Z顺序的顶层,返回执行步骤S11;\n[0075] 如果在上一时刻悬浮窗展现,即指定窗体的被遮挡的部分大于等于所述门限;则在当前时刻,保持悬浮窗的展现状态并置于Z顺序的顶层;如果在上一时刻悬浮窗没有展现,即指定窗体的被遮挡的部分小于所述门限;则在当前时刻,展现所述悬浮窗并置于Z顺序的顶层。\n[0076] 步骤S16,检测指定窗体是否处于最小化状态;\n[0077] 如果指定窗体发生最小化操作,判定所述指定窗体不可见,则执行步骤S17;如果指定窗体未进行最小化操作,此时有可能指定窗体的显示状态并未发生变化,也有可能是指定窗体的新桌面显示状态或者被遮挡状态发生变化,则需要等待步骤S12或者步骤S18中的检测结果,因此当前不作处理,流程结束;\n[0078] 步骤S17,展现所述悬浮窗并置于Z顺序的顶层,返回执行步骤S11;\n[0079] 步骤S18,检测指定窗体是否处于新桌面显示状态;\n[0080] 如果指定窗体被由当前桌面移动到一当前桌面以外的其他桌面上进行显示,判定在当前桌面上所述指定窗体不可见,则执行步骤S19;如果指定窗体没有被移动到新桌面上,此时有可能指定窗体的显示状态并未发生变化,也有可能是指定窗体的最小化状态或者被遮挡状态发生变化,则需要等待步骤S12或者步骤S16中的检测结果,因此当前不作处理,流程结束;\n[0081] 步骤S19,展现所述悬浮窗并置于Z顺序的顶层,返回执行步骤S11。\n[0082] 需要说明的是,在步骤S14、S15、S17和S19中,悬浮窗的展现是与指定窗体的状态关联的,但是悬浮窗的展现并不会破坏指定窗口的打开状态。\n[0083] 另外,每次隐藏所述悬浮窗时,需要记录所述悬浮窗停止展现的位置;这样下一次默认在所述位置上展现所述悬浮窗。所述悬浮窗默认显示为透明状态或半透明状态;每当检测到鼠标移动到所述悬浮窗上时,切换至不透明状态;所述悬浮窗在展现时,可以被拖动至任意位置;当检测到所述悬浮窗被点击时,置于Z顺序的顶层显示所述指定窗体并不再展现所述悬浮窗。\n[0084] 以下再以一个应用实例来解释本发明的实施例的整体流程,对应使用角度A)的描述。\n[0085] 在360安全桌面运行时,会在桌面上开启360安全桌面的主程序界面,所述主程序界面即为指定窗体;并初始设置门限为100%。\n[0086] 此时360安全桌面的主程序界面显示在桌面Z顺序的顶层,没有被遮挡,此时检测到被遮挡的部分小于100%时,悬浮窗没有展现。\n[0087] 用户通过鼠标点击操作,将窗体A激活显示在桌面的Z顺序的顶层;此时检测发现除了指定窗体外,桌面上打开的顶级窗体就是窗体A,判断出窗体A的Z顺序在360安全桌面的主程序界面之上,并且两者存在重叠关系。根据窗体A和360安全桌面的主程序界面分别在桌面上的坐标,得到360安全桌面的主程序界面被窗体A遮挡了10%,小于100%,此时悬浮窗依然没有展现,如图2所示。\n[0088] 用户通过鼠标点击拖动操作,新开一窗体B,将其尺寸拉大并拖动到桌面的一新位置;此时检测发现除了指定窗体外,桌面上打开的顶级窗体就是窗体A和窗体B,判断出窗体A、B的Z顺序都在360安全桌面的主程序界面之上,并且窗体A、B与360安全桌面的主程序界面存在重叠关系。分别根据窗体A、B和360安全桌面的主程序界面在桌面上的坐标,得到360安全桌面的主程序界面被窗体A、B一起完全遮挡,等于100%,此时所述悬浮窗展现并置于Z顺序的顶层以提示用户,如图3所示。需要注意的是,360安全桌面的主程序界面虽然被遮挡住了但是依然保持开启,并未因悬浮窗的展现而关闭。\n[0089] 所述悬浮窗默认显示为透明状态或半透明状态,此时用户将鼠标移动到所述悬浮窗上时,切换至不透明状态;用户点击所述悬浮窗,360安全桌面的主程序界面被置于Z顺序的顶层显示,并停止展现所述悬浮窗,如图4所示。需要记录所述悬浮窗停止展现的位置;这样下一次默认在所述位置上展现所述悬浮窗。\n[0090] 此时,在360安全桌面的主程序界面被置于Z顺序的顶层显示后,如果用户将所述\n360安全桌面的主程序界面最小化,此时展现所述悬浮窗并置于Z顺序的顶层以提示用户;\n如果用户使用双屏显示的情况,将360安全桌面的主程序界面由当前屏幕显示的电脑桌面A上点击拖动到另一屏幕显示的电脑桌面B上,则在电脑桌面A上展现所述悬浮窗并置于Z顺序的顶层以提示用户。\n[0091] 以下又以一个应用实例来解释本发明的实施例的一种特殊应用,对应使用角度B)的描述。\n[0092] 在360安全桌面运行时,会在桌面上开启360安全桌面的主程序界面,所述360安全桌面的主程序界面为指定窗体A;此时,桌面上还使用360浏览器打开一网页,所述网页为指定窗体B;另外,360保险箱的主程序界面也被激活,所述360保险箱的主程序界面为指定窗体C;初始设置门限为100%。三个指定窗体初始打开时,互相都没有被遮挡,所以此时桌面上没有悬浮窗展现,如图5所示。\n[0093] 此时,用户鼠标点击操作,全屏打开一word文档,所述word文档的窗体显示在桌面的Z顺序的顶层,此时检测发现除了指定窗体外,桌面上打开的顶级窗体就是所述word文档的窗体。判断出所述word文档的窗体的Z顺序在指定窗体A、指定窗体B和指定窗体C之上,并且它们存在重叠关系。\n[0094] 获知所述word文档完全遮挡住了指定窗体A、指定窗体B和指定窗体C,则此时分别对应指定窗体A、指定窗体B和指定窗体C展现三个悬浮窗并置于Z顺序的顶层以提示用户,如图6所示。需要注意的是,指定窗体A、指定窗体B和指定窗体C虽然被word文档的窗体遮挡住了但是依然保持开启,并未因悬浮窗的展现而关闭,具体来说:\n[0095] 1)即对于指定窗体A来说,被其他顶级窗体指定窗体B、指定窗体C和word文档的窗体共同完全遮挡,被遮挡部分等于100%,此时展现对应于指定窗体A的悬浮窗A并置于Z顺序的顶层以提示用户;\n[0096] 2)即对于指定窗体B来说,被其他顶级窗体指定窗体A、指定窗体C和word文档的窗体共同完全遮挡,被遮挡部分等于100%,此时展现对应于指定窗体B的悬浮窗B并置于Z顺序的顶层以提示用户;\n[0097] 3)即对于指定窗体C来说,被其他顶级窗体指定窗体A、指定窗体B和word文档的窗体共同完全遮挡,被遮挡部分等于100%,此时展现对应于指定窗体C的悬浮窗C并置于Z顺序的顶层以提示用户。\n[0098] 用户点击悬浮窗A,指定窗体A,即360安全桌面的主程序界面被置于Z顺序的顶层显示,并不再展现所述悬浮窗A;此时指定窗体B和指定窗体C依然被完全遮挡,悬浮窗B和C依然保持展现,如图7所示。\n[0099] 当在全屏显示的某窗体的后面被遮挡多个指定窗体时,如果希望快速切换至这些指定窗体,本发明为被遮挡的指定窗体提供一种快速切换的入口。\n[0100] 另外,在上述应用实例的基础上稍加变形,对应使用角度C)的描述。用户先后点击激活指定窗口C、B、A,因此按照指定窗口A、B和C最近一次被激活的先后进行优先级排序,由于在下一次操作执行之前最近一次被激活是指定窗口A,因此指定窗口A的优先级顺序最高。当激活word文档并全屏显示,在指定窗口A、B和C被全部遮挡的情况下,三者的悬浮窗均可以被展现,对应展示指定窗口A、B、C中优先级最高的指定窗口,即指定窗口A,展现其悬浮窗。当然,优先级顺序还有其他设置方法,例如用户根据偏好设定的优先级顺序、根据用户的使用频率设定的优先级顺序等等,本发明并不限于此。\n[0101] 以下以再一实施例对本发明的装置进行说明。如图8所示,为一种悬浮窗显示装置,包括:监测模块1和控制模块2;\n[0102] 监测模块1,用于监测指定窗体的显示状态,具体来说,检测在当前桌面上是否存在窗体激活、窗体拖动、窗体最小化和/或窗体尺寸改变的操作,如果存在,则进一步检测指定窗体的显示状态;其中,检测指定窗体的显示状态,进一步包括:\n[0103] 识别单元11,用于识别桌面上打开的顶级窗体,判断所述指定窗体与所述顶级窗体的Z顺序;检测单元12,当存在Z顺序排在所述指定窗体之前的一个或多个顶级窗体时,用于检测所述指定窗体与所述顶级窗体是否存在重叠关系;获取单元13,当存在所述重叠关系时,根据所述顶级窗体与指定窗体的桌面坐标,获取所述指定窗体被所述顶级窗体共同遮挡的部分。\n[0104] 控制模块2,用于根据指定窗体的显示状态控制与指定窗体关联的悬浮窗展现,所监测的显示状态是所述指定窗体在当前桌面的可见状态;大体而言,在当前桌面所述指定窗体可见时,在当前桌面上不展现所述悬浮窗;在当前桌面所述指定窗体不可见时,在当前桌面上展现所述悬浮窗;具体执行以下操作:\n[0105] 基本操作--当检测到所述指定窗体处于最小化状态时,判定所述指定窗体不可见,展现所述悬浮窗;当检测到所述指定窗体移动到一当前桌面以外的其他桌面上进行显示时,判定在当前桌面上所述指定窗体不可见,在当前桌面上展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分大于等于一门限时,判定所述指定窗体可见,展现所述悬浮窗;当检测到所述指定窗体的被遮挡部分小于所述门限时,判定所述指定窗体不可见,不展现所述悬浮窗;当检测到所述悬浮窗被点击时,将所述指定窗体置于Z顺序的顶层显示并不再展现所述悬浮窗;记录所述悬浮窗停止展现的位置,下一次默认在所述位置上展现所述悬浮窗;\n[0106] 拓展操作--当监测多个指定窗体时,根据每个指定窗体的显示状态控制与每个指定窗体关联的悬浮窗的展现,仅将所述需要展示悬浮窗的指定窗体中优先级最高的指定窗体的悬浮窗展现;或者,将所述多个指定窗体的悬浮窗同时展现。\n[0107] 另外,所述监测模块1,还用于检测鼠标是否移动到所述悬浮窗上;\n[0108] 所述控制模块2,默认将所述悬浮窗显示为透明状态或半透明状态,每当检测到鼠标移动到所述悬浮窗上时,用于将所述悬浮窗切换至不透明状态。\n[0109] 上述装置与前述方法的特征对应,不足之处可以参考前述方法。\n[0110] 上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
法律信息
- 2022-08-16
专利权的转移
登记生效日: 2022.08.03
专利权人由北京奇虎科技有限公司变更为北京奇虎科技有限公司
地址由100088 北京市西城区新街口外大街28号D座112室(德胜园区)变更为100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801
专利权人由奇智软件(北京)有限公司 变更为空
- 2015-11-25
- 2015-11-11
专利申请权的转移
登记生效日: 2015.10.22
申请人由奇智软件(北京)有限公司变更为北京奇虎科技有限公司
地址由100016 北京市朝阳区酒仙桥路14号兆维大厦4层东侧单元变更为100088 北京市西城区新街口外大街28号D座112室(德胜园区)
申请人变更为奇智软件(北京)有限公司
- 2011-09-28
实质审查的生效
IPC(主分类): G06F 3/048
专利申请号: 201110082707.8
申请日: 2011.04.01
- 2011-08-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |