CN113672325A - 悬浮窗显示方法、装置、电子设备及存储介质 - Google Patents
悬浮窗显示方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113672325A CN113672325A CN202110908890.6A CN202110908890A CN113672325A CN 113672325 A CN113672325 A CN 113672325A CN 202110908890 A CN202110908890 A CN 202110908890A CN 113672325 A CN113672325 A CN 113672325A
- Authority
- CN
- China
- Prior art keywords
- floating window
- layout
- file
- interface component
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000007704 transition Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 14
- 239000000725 suspension Substances 0.000 abstract description 12
- 238000011161 development Methods 0.000 abstract description 7
- 230000006978 adaptation Effects 0.000 abstract description 6
- 238000013475 authorization Methods 0.000 abstract description 6
- 230000002349 favourable effect Effects 0.000 abstract description 3
- 230000000694 effects Effects 0.000 description 54
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请提供了悬浮窗显示方法、装置、电子设备及存储介质,属于界面布局技术领域。其中,悬浮窗显示方法包括:响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;基于帧布局将悬浮窗的布局文件传入内容布局文件,以使悬浮窗显示在第一界面组件对应界面的顶层。本申请的实施在响应于悬浮窗的开启操作时无需完成授权操作,减少了用户使用悬浮窗的操作,提高了悬浮窗的使用体验,同时节省了针对不同机型完成悬浮窗的权限适配的开发过程,有利于提高开发效率。
Description
技术领域
本申请涉及界面布局的技术领域,具体而言,本申请涉及一种悬浮窗显示方法和装置,一种电子设备,以及一种计算机可读存储介质。
背景技术
悬浮窗属于终端的一种系统工具,可以在其他应用的上层显示,以便用户在同一时间打开不同的应用。
在现有技术中,在终端上使用悬浮窗必须完成授权操作,然而,悬浮窗开启权限的操作非常复杂,容易导致用户放弃开启权限从而放弃使用悬浮窗的问题;且不同的机型开启权限的操作不同,开发端需要耗费较高的成本去完成悬浮窗的权限适配,不利于悬浮窗的推广应用。
发明内容
本申请的目的旨在提供一种悬浮窗显示方法、装置、电子设备及存储介质,以解决上述的至少一个技术问题。本申请实施例所提供的方案具体如下:
第一方面,本申请提供了一种悬浮窗显示方法,包括:
响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;
基于帧布局将所述悬浮窗的布局文件传入所述内容布局文件,以使所述悬浮窗显示在所述第一界面组件对应界面的顶层。
结合第一方面,在第一方面的第一种实施方式中,还包括:
监听到所述第一界面组件发生状态转换,获取当前位于应用界面组件栈顶端的第二界面组件;
在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件;
基于帧布局将所述悬浮窗的布局文件传入所述第二界面组件的内容布局文件,以使所述悬浮窗显示在第二界面组件对应界面的顶层。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件之前,还包括:
判断所述悬浮窗的布局文件的父布局是否与所述第二界面组件的内容布局文件相应;
若是,继续显示所述悬浮窗;
若否,执行在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件,以及基于帧布局将所述悬浮窗的布局文件传入所述第二界面组件的内容布局文件的步骤。
结合第一方面、第一方面的第一种实施方式或第二种实施方式,在第一方面的第三种实施方式中,还包括:
响应于对所述悬浮窗的调整操作,获取所述悬浮窗的调整数据;
基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数;
基于所述目标布局参数执行所述悬浮窗的调整操作。
结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,所述调整操作包括缩放操作和移动操作中的至少一种;
所述响应于对所述悬浮窗的调整操作,获取所述悬浮窗的调整数据,包括以下至少一项:
响应于对所述悬浮窗的缩放操作,获取所述悬浮窗缩放后的尺寸数据;
响应于对所述悬浮窗的移动操作,获取所述悬浮窗移动后的位置数据。
结合第一方面的第三种实施方式,在第一方面的第五种实施方式中,所述权限状态为无权限状态;所述基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括:
基于与所述悬浮窗的权限状态相应的无权限参数文件与所述调整数据,生成帧布局的第一布局参数;
基于与所述悬浮窗的权限状态相应的无权限控制实现文件,将所述第一布局参数转换为全局参数;
基于所述全局参数与预设的有权限参数文件,生成目标布局参数。
结合第一方面的第三种实施方式,在第一方面的第六种实施方式中,所述权限状态为有权限状态;所述基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括:
基于与所述悬浮窗的权限状态相应的有权限参数文件与所述调整数据,生成全局的第二布局参数;
基于与所述悬浮窗的权限状态相应的有权限控制实现文件,将所述第二布局参数转换为帧布局参数;
基于所述帧布局参数与预设的无权限参数文件,生成目标布局参数。
第二方面,本申请提供了一种悬浮窗显示装置,包括:
获取模块,用于响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;
显示模块,用于基于帧布局将所述悬浮窗的布局文件传入所述内容布局文件,以使所述悬浮窗显示在所述第一界面组件对应界面的顶层。
第三方面,本申请提供了一种电子设备,该电子设备包括存储器和处理器;存储器中存储有计算机程序;处理器,用于在运行计算机程序时,执行第一方面及其任一项所提供的方法。
第四方面,本申请提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,计算机程序在被处理器运行时,执行第一方面及其任一项所提供的方法。
与现有技术相比,本申请提供的技术方案的有益效果如下:
本申请实施例提供的悬浮窗显示方法、装置、电子设备及存储介质中,响应于悬浮窗的开启操作,首先获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;由于应用界面组件采用堆栈的布局方式管理各界面组件,且一个界面组件实例的状态决定其在栈中的位置,因此,所获取的第一界面组件为处于活动状态的界面组件。进而,基于帧布局将悬浮窗的布局文件传入第一界面组件的内容布局文件中,以使悬浮窗显示在第一界面组件对应界面的顶层;由于帧布局具有上一层视图覆盖下一层视图的特性,因此基于帧布局将悬浮窗的布局文件传入第一界面组件的内容布局文件中可以实现将悬浮窗显示在界面顶层的效果。本申请的实施在响应于悬浮窗的开启操作时无需完成授权操作,减少了用户使用悬浮窗的操作,提高了悬浮窗的使用体验,同时节省了针对不同机型完成悬浮窗的权限适配的开发过程,有利于提高开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为相关技术中开启悬浮窗权限的操作界面示意图;
图2为相关技术中开启悬浮窗权限的操作界面示意图;
图3为相关技术中开启悬浮窗权限的操作界面示意图;
图4为相关技术中开启悬浮窗权限的操作界面示意图;
图5为相关技术中开启悬浮窗权限的操作界面示意图;
图6为相关技术中开启悬浮窗权限的操作界面示意图;
图7为相关技术中开启悬浮窗权限的操作界面示意图;
图8为本申请的一种实施例提供的悬浮窗显示方法的流程图;
图9为本申请的一种实施例中界面框架的结构示意图;
图10为与图9中界面框架相应的一种界面示意图;
图11为与图9中界面框架相应的一种界面示意图;
图12为本申请的一种实施例中执行悬浮窗调整操作的流程图;
图13为本申请的一种实施例提供的悬浮窗显示装置的结构示意图;
图14为本申请提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为了更好的理解及说明本申请实施例所提供的方案,下面首先对本申请所涉及的相关技术进行说明。
悬浮窗:属于终端的一种系统工具,可以在其他应用的上层显示;也即可以在同一时间运行至少两个应用,其中至少一个应用通过悬浮窗进行显示。
在相关技术中,在终端上使用悬浮窗必须完成授权操作,如通过开启权限,允许本应用在当前使用的其他应用的上层显示。
下面针对相关技术中关于悬浮窗开启权限的相关内容进行说明。
如图1所示,安卓系统的UI界面(User Interface,又称用户界面)是有多个窗口Window搭载展示的,类似图1所示的应用可以理解为其中的一个Window,当开启悬浮窗的权限后,安卓系统将允许该应用创建一个可以显示在其他应用上层的Window,以实现悬浮窗的显示效果。由于创建的Window优先级相对于应用的优先级而言更高,因此无论怎么切换界面组件Activity,悬浮窗对应的Window也可以置于顶部,该界面的布局保证了悬浮窗的应用体验。
然而,悬浮窗开启权限的操作过程非常麻烦,而且针对不同型号的终端开启权限的操作也不相同,因此也难以统一向用户提供开启权限的操作引导。下面给出相关技术中悬浮窗开启权限的一种示例操作:用户可以通过点击图2中所示的“立即开启”的控件,进行页面跳转,并跳转到系统权限开启页面,如图3所示;进而点击图3中所示的“应用”控件,进行页面跳转,并跳转到应用列表页面,如图4所示;进而在该页面通过上下滑动操作找到相应需要开启权限的应用,如图5所示,点击进入应用权限页面,如图6所示,并通过找到所需开启的权限,如“悬浮窗”后,进入如图7所示的悬浮窗权限页面,通过点击“允许”后返回应用,至此完成了悬浮窗开启权限的整个操作过程。
通过上述介绍可见,相关技术中悬浮窗开启权限的操作非常复杂,且对用户非常不友好,但是如果不开启该权限则无法成功使用悬浮窗的功能,容易导致用户放弃开启权限从而放弃使用悬浮窗的问题。
另外,由于不同机型开启权限的操作不同,开发端需要判断是什么机型的终端,是什么安卓版本,进而调用系统的接口请求悬浮窗的权限,然而有可能存在适配失败的问题,导致请求权限失败,最终无法使用悬浮窗功能。
以上问题的存在非常不利于悬浮窗的推广应用,为了解决上述问题中的至少一个,本申请提供了一种悬浮窗显示方法,该方法无需用户实施任何开启权限的操作,开发端也无需考虑机型适配问题,有利于提高悬浮窗功能的使用体验以及开发效率。
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体地实施例和附图对本申请的各可选的实施方式及本申请实施例的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。图8中示出了本申请实施例提供的一种悬浮窗显示方法,该方法具体可以由本申请实施例提供的电子设备执行,具体地电子设备可以是终端,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。具体地,该方法包括以下步骤S101-102:
步骤S101:响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件。
具体地,用户可以在终端的UI界面上执行悬浮窗的开启操作,该开启操作具体指向于应用悬浮窗进行展示的应用程序;如用户希望在使用某一直播APP观看直播的同时使用其他应用程序进行文档编辑,则可以触发悬浮窗的开启操作,以通过悬浮窗播放该直播APP正在播放的直播内容。其中,开启操作适应于不同的应用程序而言可能匹配不同的适配操作,而该操作可以是多指滑动、向某一方向滑动、退出终端主界面、退出应用、退出某一应用界面等等。
具体地,第一界面组件对应于正在运行的其他应用程序,也即相对于用户想通过悬浮窗运行的应用程序而言的其他应用程序。
其中,应用界面组件Activity用于提供一个UI界面,用户可以通过该界面交互完成某项任务。Activity中的所有操作都与用户密切相关,一般而言一个Activity对应为一个单独的UI界面,在该界面上可以显示一些控件,也可以监听并针对用户的操作事件作出响应。安卓Android是通过应用界面组件栈(Activity栈)的方式对Activity进行管理,一个Activity实例的状态决定其在栈中的位置。可以理解的是,当前终端正在显示的界面对应的Activity处于栈顶端,而当该Activity因为异常或其他原因被销毁时,处于栈第二层的Activity将被激活,上浮到栈顶;当新的Activity启动入栈时,原Activity会被压入到栈的第二层。
其中,一个Activity在栈中的位置变化可以反映其在不同状态间的转换。而Activity对应于四种基本状态:活动状态(又称激活状态、运行状态,active或者running)、暂停状态(paused)、停止状态(stopped)和销毁状态(killed)。具体地,位于Activity栈顶端的第一界面组件对应为处于活动状态的Activity。
其中,内容布局文件ContentView对应于Activity中的布局文件View。
步骤S102:基于帧布局将悬浮窗的布局文件传入内容布局文件,以使悬浮窗显示在第一界面组件对应界面的顶层。
其中,帧布局FrameLayout容器可以为每个加入其中的组件创建一个空白区域(称为一个帧),每个子组件占据一帧;帧布局的效果是把组件一个一个地叠加在一起显示。帧布局对应于堆栈布局特性,也即上一层的视图会覆盖下一层视图,如后添加的View置于顶层。
其中,将悬浮窗的布局文件传入第一界面组件的内容布局文件可以采用添加操作也可以采用删除操作,如调用addContentView,将悬浮窗的View直接添加到View容器中,使其具有view叠加的效果。如调用setContentView,设置时会将View容器清空后在添加新的View,无view叠加的效果。优选地,本申请实施例采用添加操作。
具体地,由于适应于帧布局特性将悬浮窗的View添加到第一界面组件的ContentView中,可以实现将悬浮窗显示在界面顶层的效果。
下面针对本申请实施例涉及的界面框架进行说明。
安卓系统中UI界面是由多个Window搭载展示的,图9所示是Activity所依附的PhoneWindow,其中ActionBar对应于图10方框所示的Toolbar,ContentParent也即常见界面内容的父布局,用于展示View(如图11方框所示)。其中,图8中DecorView是PhoneWindow类的内部类,该类是一个FrameLayout的子类,并且是PhoneWindow的子类,可以看作Toolbar和ContentParent的父布局。一般而言,UI界面展示的内容是添加到id为content的FrameLayout中。
适应于上述实施例的步骤S101-S102,可以通过如下代码指令:
topActivity.window.decorView.findViewById(android.R.id.content)
获取到当前Activity(第一界面组件)的ContentView,并把悬浮窗的View添加到mContainer.get()?.addView(layout)中。
通过上述实施例,可以实现将悬浮窗添加到Activity的顶层,但本申请进一步考虑到,若进行Activity切换则悬浮窗的View会适应原来的Activity一并消失的问题,因此将在下面针对在切换Activity时仍保持悬浮窗显示在所有Activity顶层的具体过程进行说明。
具体地,本申请实施例在Activity的基类中的onResume(Activity生命周期可见)中添加监听,每当有新的Activity可见时发出一个对应的EventBus,以通知当前具有新的Activity可见,也即原Activity处于非活动状态,而新Activity处于活动状态。
在一实施例中,在步骤S102之后,本申请实施例还包括步骤S103-S105:
步骤S103:监听到第一界面组件发生状态转换,获取当前位于应用界面组件栈顶端的第二界面组件。
具体地,当一个新Activity启动入栈后,它将显示在界面的最顶层,位于栈的最顶端(Activity栈顶),此时该新的Activity处于可见并可以和用户交互的活动状态。其中,监听到第一界面组件发生状态转换时,可以是指第一界面组件由活动状态转换为非活动状态,但本申请实施例对第一界面组件所处的非活动状态不作限定。此时,可以获取处于活动状态的第二界面组件,该组件处于Activity栈顶端。
具体地,可以在应用程序Application中获取当前可见的Activity实例进行保存,并对该Activity创建监听接收EventBus事件。
步骤S104:在第一界面组件的内容布局文件中移除悬浮窗的布局文件。
具体地,将悬浮窗的布局文件中当前处于非活动状态的第一界面组件的内容布局文件中移除。
步骤S105:基于帧布局将悬浮窗的布局文件传入第二界面组件的内容布局文件,以使悬浮窗显示在第二界面组件对应界面的顶层。
具体地,将悬浮窗的布局文件重新添加到当前处于活动状态的第二界面组件的内容布局文件中,以保证悬浮窗的View在Activity切换的过程中仍然保持在界面最顶层的效果。
在本申请实施例中,为了提高显示悬浮窗的效率和效果,在步骤S103之后,步骤S104之前,还可以包括以下步骤S106:
步骤S106:判断悬浮窗的布局文件的父布局是否与第二界面组件的内容布局文件相应;
若是,继续显示悬浮窗;
若否,执行在第一界面组件的内容布局文件中移除悬浮窗的布局文件,以及基于帧布局将悬浮窗的布局文件传入第二界面组件的内容布局文件的步骤。
具体地,当将悬浮窗的View添加进Activity的ContentView时,其与父布局ContentParent是相应的,因此,在考虑提高悬浮窗的显示效率时,可以首先判断悬浮窗的View的父布局是否为当前处于活动状态的Activity的ContentView,若是,则无需进行任何操作,悬浮窗将仍保持显示在界面的顶层;若否,则执行步骤S104和S105。
下面针对已显示悬浮窗进行调整的具体过程进行说明。
具体地,考虑到Activity在不断切换的过程中需要实时更新切换不同的FrameLayout,因此,在Activity每次的切换中,均需要重新进行参数的设置,以保证悬浮窗可以继续以原始的大小和位置进行显示。针对此,如图12所示,本申请实施例为保证无权限悬浮窗的操作逻辑可以实现与有权限悬浮窗的操作逻辑对应的效果时,基于多态特性,首先针对无权限悬浮窗与有权限悬浮窗之间的共性操作生成一个父类IFloatingManager,以用于规范无权限悬浮窗与有权限悬浮窗的添加、移动和移除等操作;进而获取无权限悬浮窗与有权限悬浮窗之间的共性参数IFloatParams,以用于规范无权限悬浮窗与有权限悬浮窗的位置和大小;以上是针对无权限悬浮窗与有权限悬浮窗的共性所作的处理,因此,在规范之后,还针对无权限悬浮窗与有权限悬浮窗之间不同的特性生成对应的实现类,AnyPlaceWindowManager(有权限悬浮窗操作控制实现类),AnyPlaceParams(有权限悬浮窗参数类),InsideWindowManager(无权限悬浮窗操作控制实现类),InsideParams(无权限悬浮窗参数类)。其中,类是用于创建对象的模板,通过代码封装数据以处理相应的数据。本申请实施例中考虑到在一些场景中悬浮窗可能处于无权限状态,在另一些场景中悬浮窗可能处于有权限状态,也即在实现悬浮窗效果的过程中可能涉及到权限状态之间的转换,因此,上述生成的实现类可以用于把针对悬浮窗的相应操作转换成悬浮窗对应权限状态类型的操作。
在一实施例中,步骤S102或S105之后,还可以包括步骤A1-A3:
步骤A1:响应于对悬浮窗的调整操作,获取悬浮窗的调整数据。
具体地,在悬浮窗的应用过程中,用户可以根据需求对悬浮窗进行调整,如考虑到悬浮窗所占面积太大无法同时查看其它应用所显示内容时,将悬浮窗的尺寸进行缩小;考虑到悬浮窗所占面积太小难以清除查看悬浮窗所显示内容时,将悬浮窗的尺寸进行放大;考虑到悬浮窗当前位置遮挡其它应用所显示内容的重点时,移动悬浮窗所处位置等等。相应地,调整数据可以是悬浮窗缩放后的大小尺寸或移动后所处位置信息等。
步骤A2:基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数。
具体地,预设规范文件可以是指针对有权限的悬浮窗和无权限的悬浮窗之间的共性特性和不共性特性所预设的文件。目标布局参数可以是指在悬浮窗相应权限状态下,最终实施调整操作时对应的数据;因为在不同权限状态下所需生成执行的指令不同,因此对应的目标布局参数不同。
步骤A3:基于目标布局参数执行悬浮窗的调整操作。
具体地,在基于悬浮窗无权限或有权限的状态适应生成目标布局参数后,则可以调用相应的框架指令完成对悬浮窗的调整操作并最终呈现在界面上。
可选地,调整操作包括缩放操作和移动操作中的至少一种;步骤A1中响应于对悬浮窗的调整操作,获取悬浮窗的调整数据,包括以下步骤A11-A12中的至少一项:
步骤A11:响应于对悬浮窗的缩放操作,获取悬浮窗缩放后的尺寸数据;
具体地,缩放操作包括缩小和放大操作中的一种,缩放后的尺寸数据包括最终确定的悬浮窗的显示尺寸。如用户可以通过长按并拖动悬浮窗某一端点对悬浮窗所占面积进行缩小或放大处理,此时可以基于用户操作完成后悬浮窗所占面积的大小确定悬浮窗缩放后的尺寸数据。本申请实施例对用户如何实施缩放操作的交互行为不作限制。
步骤A12:响应于对悬浮窗的移动操作,获取悬浮窗移动后的位置数据。
具体地,移动操作是指在UI界面上悬浮窗所处位置发生变动的操作;其中,悬浮窗所处的位置可以以悬浮窗的中心点或左上角端点所确定,也即悬浮窗移动后的位置数据可以基于悬浮窗的中心点或左上角端点等所处位置确定。
可选地,用户可以通过双击悬浮窗使得悬浮窗处于可移动状态后,通过拖动悬浮窗完成移动操作,进而以用户实施拖动操作结束时悬浮窗所处位置确定悬浮窗移动后的位置数据。
其中,位置数据可以采用二维坐标信息确定,如X轴和Y轴坐标值。
可选地,权限状态可以包括无权限状态;步骤A2中基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括以下步骤B1-B3:
步骤B1:基于与悬浮窗的权限状态相应的无权限参数文件与调整数据,生成帧布局的第一布局参数。
具体地,以调整操作为移动操作为例进行说明:当用户移动悬浮窗时,悬浮窗的布局文件View将会实时计算悬浮窗所处的最新位置对应的X轴和Y轴坐标值,进而判断悬浮窗当前的权限状态为无权限状态时,将移动后的位置数据传递至无权限参数文件InsideParams,InsideParams将记录该位置数据,并通过共性参数IFloatParams的预设规范文件生成帧布局的第一布局参数FrameLayout.LayoutParams(用于构建无权限悬浮窗的参数类型)。
步骤B2:基于与悬浮窗的权限状态相应的无权限控制实现文件,将第一布局参数转换为全局参数。
具体地,结合上述步骤B1的例子进行说明,在步骤B1生成第一布局参数后,可以结合无权限控制实现文件InsideWindowManager更新悬浮窗的位置,此时无权限控制实现文件可以根据父类IFloatingManager生成帧布局文件FrameLayout,进而结合第一布局参数进行设置。
其中,由于涉及到权限状态之间的转换问题,本申请实施例还可以通过预设的“转换器”进行指令的转换。具体地,首先将第一布局参数FrameLayout.LayoutParams转换成InsideParams,进而通过共性参数对应的IFloatParams规范生成全局参数AnyPlaceParams。
步骤B3:基于全局参数与预设的有权限参数文件,生成目标布局参数。
具体地,结合上述步骤B2的例子进行说明,在步骤B2生成全局参数后,本申请实施例可以采用预设的有权限参数文件AnyPlaceParams(有权限悬浮窗参数类)克隆逻辑生成目标布局参数WindowManager.LayoutParams(),最终基于生成的目标布局参数进行悬浮窗的调整操作并显示在界面上。
可选地,权限状态可以包括有权限状态;步骤A2中基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括以下步骤C1-C3:
步骤C1:基于与悬浮窗的权限状态相应的有权限参数文件与调整数据,生成全局的第二布局参数。
具体地,以调整操作为移动操作为例进行说明:当用户移动悬浮窗时,悬浮窗的布局文件View将会实时计算悬浮窗所处的最新位置对应的X轴和Y轴坐标值,进而判断悬浮窗当前的权限状态为有权限状态时,将移动后的位置数据传递至有权限参数文件AnyPlaceParams,并生成全局的第二布局参数WindowManager.LayoutParams()。
步骤C2:基于与悬浮窗的权限状态相应的有权限控制实现文件,将第二布局参数转换为帧布局参数。
具体地,结合上述步骤C1的例子进行说明,在步骤C1生成第二布局参数后,可以结合有权限控制实现文件AnyPlaceWindowManager更新悬浮窗的位置,此时,可以通过getSystemService(Context.WINDOW_SERVICE)获取到WindowManager,进而结合第二布局参数进行设置。
其中,由于涉及到权限状态之间的转换问题,本申请实施例还可以通过预设的“转换器”进行指令的转换。具体地,首先将第二布局参数WindowManager.LayoutParams()转换成AnyPlaceParams,进而通过共性参数对应的IFloatParams规范生成帧布局参数InsideParams。
步骤C3:基于帧布局参数与预设的无权限参数文件,生成目标布局参数。
具体地,结合上述步骤C2的例子进行说明,在步骤C2生成帧布局参数后,本申请实施例可以采用预设的无权限参数文件InsideParams(无权限悬浮窗参数类)生成目标布局参数FrameLayout.LayoutParams,最终基于生成的目标布局参数进行悬浮窗的调整操作并显示在界面上。
下面提供一种应用例以更好地说明本申请实施例提供的悬浮窗显示方法的效果。
在一些场景中,如用户在一边观看直播一边调整文档数据的场景,用户可以触发采用悬浮窗进行直播内容的播放,并同时运行其他应用实施文档数据的调整,此时,用户触发开启悬浮窗时,无需跳转至权限开启的页面进行悬浮窗的权限开启操作,而是后台通过用户无感知的方式实现了悬浮窗播放直播内容的效果,在该使用过程中,可以增加用户观看直播时的互动意愿,提升悬浮窗的使用体验,并提升用户观看直播内容的时长,更有利于悬浮窗的推广应用。
对应于本申请所提供的悬浮窗显示方法,本申请实施例还提供了一种悬浮窗显示装置1300,其结构示意图如图13中所示,该悬浮窗显示装置1300包括:获取模块1301和显示模块1302。
其中,获取模块1301,用于响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;显示模块1302,用于基于帧布局将悬浮窗的布局文件传入内容布局文件,以使悬浮窗显示在第一界面组件对应界面的顶层。
可选地,装置1300还可以包括:
监听模块,用于监听到第一界面组件发生状态转换,获取当前位于应用界面组件栈顶端的第二界面组件;
移除模块,用于在第一界面组件的内容布局文件中移除悬浮窗的布局文件;
传入模块,用于基于帧布局将悬浮窗的布局文件传入第二界面组件的内容布局文件,以使悬浮窗显示在第二界面组件对应界面的顶层。
可选地,装置1300还可以包括:
判断模块,用于在移除模块执行第一界面组件的内容布局文件中移除悬浮窗的布局文件之前,用于执行:
判断悬浮窗的布局文件的父布局是否与第二界面组件的内容布局文件相应;
若是,继续显示悬浮窗;
若否,执行在第一界面组件的内容布局文件中移除悬浮窗的布局文件,以及基于帧布局将悬浮窗的布局文件传入第二界面组件的内容布局文件的步骤。
可选地,装置1300还可以包括调整模块,用于:
响应于对悬浮窗的调整操作,获取悬浮窗的调整数据;
基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数;
基于目标布局参数执行悬浮窗的调整操作。
可选地,调整操作包括缩放操作和移动操作中的至少一种;调整模块用于执行响应于对悬浮窗的调整操作,获取悬浮窗的调整数据时,具体还用于以下至少一项:
响应于对悬浮窗的缩放操作,获取悬浮窗缩放后的尺寸数据;
响应于对悬浮窗的移动操作,获取悬浮窗移动后的位置数据。
可选地,权限状态为无权限状态;调整模块用于执行基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数时,具体用于:
基于与悬浮窗的权限状态相应的无权限参数文件与调整数据,生成帧布局的第一布局参数;
基于与悬浮窗的权限状态相应的无权限控制实现文件,将第一布局参数转换为全局参数;
基于全局参数与预设的有权限参数文件,生成目标布局参数。
可选地,权限状态为有权限状态;调整模块用于执行基于调整数据以及与悬浮窗的权限状态相应的预设规范文件,生成目标布局参数时,具体用于:
基于与悬浮窗的权限状态相应的有权限参数文件与调整数据,生成全局的第二布局参数;
基于与悬浮窗的权限状态相应的有权限控制实现文件,将第二布局参数转换为帧布局参数;
基于帧布局参数与预设的无权限参数文件,生成目标布局参数。
本申请实施例的装置可执行本申请的实施例所提供的方法,其实现原理相类似,本申请各实施例中的装置中的各模块所执行的动作是与本申请各实施例中的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应的方法中的描述,此处不再赘述。
本申请还提供了一种电子设备,该电子设备包括存储器和处理器;其中,存储器中存储有计算机程序;处理器用于在运行计算机程序时,执行本申请任一可选实施例中所提供的方法。
本申请还提供了一种计算机可读存储介质,该存储介质中存储有计算机程序,计算机程序在被处理器运行时,执行本申请任一可选实施例中所提供的方法。
作为一可选方案,图14示出了本申请实施例适用的一种电子设备的结构示意图,如图14所示,该电子设备1400可以包括处理器1401和存储器1403。其中,处理器1401和存储器1403相连,如通过总线1402相连。可选地,电子设备1400还可以包括收发器1404。需要说明的是,实际应用中收发器1404不限于一个,该电子设备1400的结构并不构成对本申请实施例的限定。
处理器1401可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1401也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线1402可包括一通路,在上述组件之间传送信息。总线1402可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线1402可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1403可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscReadOnly Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器1403用于存储执行本申请方案的应用程序代码,并由处理器1401来控制执行。处理器1401用于执行存储器1403中存储的应用程序代码(计算机程序),以实现前述任一方法实施例所示的内容。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种悬浮窗显示方法,其特征在于,包括:
响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;
基于帧布局将所述悬浮窗的布局文件传入所述内容布局文件,以使所述悬浮窗显示在所述第一界面组件对应界面的顶层。
2.根据权利要求1所述的方法,其特征在于,还包括:
监听到所述第一界面组件发生状态转换,获取当前位于应用界面组件栈顶端的第二界面组件;
在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件;
基于帧布局将所述悬浮窗的布局文件传入所述第二界面组件的内容布局文件,以使所述悬浮窗显示在第二界面组件对应界面的顶层。
3.根据权利要求2所述的方法,其特征在于,所述在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件之前,还包括:
判断所述悬浮窗的布局文件的父布局是否与所述第二界面组件的内容布局文件相应;
若是,继续显示所述悬浮窗;
若否,执行在所述第一界面组件的内容布局文件中移除所述悬浮窗的布局文件,以及基于帧布局将所述悬浮窗的布局文件传入所述第二界面组件的内容布局文件的步骤。
4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
响应于对所述悬浮窗的调整操作,获取所述悬浮窗的调整数据;
基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数;
基于所述目标布局参数执行所述悬浮窗的调整操作。
5.根据权利要求4所述的方法,其特征在于,所述调整操作包括缩放操作和移动操作中的至少一种;
所述响应于对所述悬浮窗的调整操作,获取所述悬浮窗的调整数据,包括以下至少一项:
响应于对所述悬浮窗的缩放操作,获取所述悬浮窗缩放后的尺寸数据;
响应于对所述悬浮窗的移动操作,获取所述悬浮窗移动后的位置数据。
6.根据权利要求4所述的方法,其特征在于,所述权限状态为无权限状态;所述基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括:
基于与所述悬浮窗的权限状态相应的无权限参数文件与所述调整数据,生成帧布局的第一布局参数;
基于与所述悬浮窗的权限状态相应的无权限控制实现文件,将所述第一布局参数转换为全局参数;
基于所述全局参数与预设的有权限参数文件,生成目标布局参数。
7.根据权利要求4所述的方法,其特征在于,所述权限状态为有权限状态;所述基于所述调整数据以及与所述悬浮窗的权限状态相应的预设规范文件,生成目标布局参数,包括:
基于与所述悬浮窗的权限状态相应的有权限参数文件与所述调整数据,生成全局的第二布局参数;
基于与所述悬浮窗的权限状态相应的有权限控制实现文件,将所述第二布局参数转换为帧布局参数;
基于所述帧布局参数与预设的无权限参数文件,生成目标布局参数。
8.一种悬浮窗显示装置,其特征在于,包括:
获取模块,用于响应于悬浮窗的开启操作,获取位于应用界面组件栈顶端的第一界面组件的内容布局文件;
显示模块,用于基于帧布局将所述悬浮窗的布局文件传入所述内容布局文件,以使所述悬浮窗显示在所述第一界面组件对应界面的顶层。
9.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器中存储有计算机程序;
所述处理器,用于在运行所述计算机程序时,执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序在被处理器运行时,执行权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110908890.6A CN113672325B (zh) | 2021-08-09 | 2021-08-09 | 悬浮窗显示方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110908890.6A CN113672325B (zh) | 2021-08-09 | 2021-08-09 | 悬浮窗显示方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672325A true CN113672325A (zh) | 2021-11-19 |
CN113672325B CN113672325B (zh) | 2024-08-06 |
Family
ID=78541912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110908890.6A Active CN113672325B (zh) | 2021-08-09 | 2021-08-09 | 悬浮窗显示方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672325B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933401A (zh) * | 2019-03-22 | 2019-06-25 | 北京城市网邻信息技术有限公司 | 一种悬浮窗视图的展示方法及相关设备 |
CN114237447A (zh) * | 2021-12-13 | 2022-03-25 | 维沃移动通信有限公司 | 应用程序的分组显示方法、装置、电子设备和存储介质 |
CN115408096A (zh) * | 2022-11-02 | 2022-11-29 | 易方信息科技股份有限公司 | 一种基于Android的无侵入应用内悬浮窗实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445879A (zh) * | 2018-10-19 | 2019-03-08 | 四川长虹电器股份有限公司 | 以悬浮窗显示监控视频的方法、存储介质和设备 |
CN112114722A (zh) * | 2020-09-16 | 2020-12-22 | 北京嘀嘀无限科技发展有限公司 | 一种悬浮窗控制方法和系统 |
CN112947813A (zh) * | 2021-03-04 | 2021-06-11 | 广州博冠信息科技有限公司 | 控制悬浮窗口常驻显示方法、装置、介质及电子设备 |
-
2021
- 2021-08-09 CN CN202110908890.6A patent/CN113672325B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445879A (zh) * | 2018-10-19 | 2019-03-08 | 四川长虹电器股份有限公司 | 以悬浮窗显示监控视频的方法、存储介质和设备 |
CN112114722A (zh) * | 2020-09-16 | 2020-12-22 | 北京嘀嘀无限科技发展有限公司 | 一种悬浮窗控制方法和系统 |
CN112947813A (zh) * | 2021-03-04 | 2021-06-11 | 广州博冠信息科技有限公司 | 控制悬浮窗口常驻显示方法、装置、介质及电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933401A (zh) * | 2019-03-22 | 2019-06-25 | 北京城市网邻信息技术有限公司 | 一种悬浮窗视图的展示方法及相关设备 |
CN109933401B (zh) * | 2019-03-22 | 2023-01-24 | 北京城市网邻信息技术有限公司 | 一种悬浮窗视图的展示方法及装置 |
CN114237447A (zh) * | 2021-12-13 | 2022-03-25 | 维沃移动通信有限公司 | 应用程序的分组显示方法、装置、电子设备和存储介质 |
CN115408096A (zh) * | 2022-11-02 | 2022-11-29 | 易方信息科技股份有限公司 | 一种基于Android的无侵入应用内悬浮窗实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113672325B (zh) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113672325A (zh) | 悬浮窗显示方法、装置、电子设备及存储介质 | |
EP3451641B1 (en) | Mobile communication device with separate display areas and rearrangemet of icons in the edges areas. | |
WO2018127063A1 (zh) | 应用数据处理的方法、装置及存储介质 | |
CN105278811B (zh) | 智能终端的屏幕显示装置和方法 | |
US20220239612A1 (en) | Information interaction method, apparatus, device, storage medium and program product | |
CN109064538B (zh) | 视图渲染方法、装置、存储介质及智能终端 | |
US20130024818A1 (en) | Apparatus and Method for Handling Tasks Within a Computing Device | |
CA2788104C (en) | Component display processing method and user equipment | |
CN1307540C (zh) | 图形用户界面应用开发支持设备、显示设备和方法 | |
CN108549562A (zh) | 一种图像加载的方法及装置 | |
EP3485358B1 (en) | Electronic device and method thereof for managing applications | |
WO2021243788A1 (zh) | 屏幕截图方法及装置 | |
CN107357575A (zh) | 工作模式的切换方法及装置、镜面显示设备及存储介质 | |
CN107957687A (zh) | 互联设备功能的控制方法及装置 | |
KR20200118211A (ko) | 사용자 인터페이스를 디스플레이하기 위한 디바이스, 방법, 및 컴퓨터 프로그램 | |
CN112817790A (zh) | 模拟用户行为的方法 | |
CN117406982A (zh) | 一种存算一体应用生成系统和生成方法、存储介质及设备 | |
CN111142997A (zh) | 一种应用显示方法、车机及计算机存储介质 | |
CN104102367A (zh) | 一种信息处理方法及装置 | |
CN112015309B (zh) | 显示切换方法、装置及移动终端 | |
KR101390467B1 (ko) | 그래픽 객체 이동 방법 및 장치 | |
CN116302230A (zh) | 一种页面展示方法、装置及设备 | |
CN111338520B (zh) | 标签显示方法、设备以及计算机可读介质 | |
CN110908573B (zh) | 算法模型训练方法、装置、设备及存储介质 | |
CN110046237B (zh) | 一种对话式交互处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |