一种多视频窗口层级切换方法及装置的制造方法

xiaoxiao2021-2-23  117

一种多视频窗口层级切换方法及装置的制造方法
【技术领域】
[0001]本发明涉及无线通信技术领域,尤其涉及一种多视频窗口层级切换方法及装置。
【背景技术】
[0002]在Android(安卓)系统中,视频一般通过SurfaceView(表面视图)或其子类GLSurfaceView (Graphics Library SurfaceView,图形库表面视图)进行画面清染,因为SurfaceView支持在多线程下进行选择,能达到普通View(视图)无法达到的清染帧率,从而满足视频播放的需求。
[0003]目前,当在一个屏幕内,同时播放多个视频,并出现交错的情况下,要去动态切换视频的层级关系时,按照Surf aceV i ew的特性,将无法实现切换。原因在于Surf aceV i ew中的surface是具有Z方向的层级关系,在SurfaceView被创建的时候已经确定,且不能在创建后更改。这使得动态切换SurfaceView只能通过removeView (移除视图)和addView (添加视图)的方式将控件移除,并在移除后将需要改变层级关系的窗口置顶,但是这样将导致Surf aceView的销毁和重建,从而导致视频在短暂时间内会出现黑屏效果,严重影响用户体验。

【发明内容】

[0004]本发明提供一种多视频窗口层级切换方法及装置,以解决现有技术中视频窗口切换时出现黑屏效果的问题。
[0005]根据本发明实施例的第一方面,提供一种多视频窗口层级切换方法,包括:
[0006]检测需要层级切换的目标视频窗口;
[0007]将所述目标视频窗口当前的视频画面显示在主线程画布上;
[0008]将所述目标视频窗口从当前布局中移除;
[0009]将从当前布局中移除后的所述目标视频窗口的层级设置为最上层;
[0010]将所述设置为最上层的目标视频窗口添加到原布局中,并清除所述主线程画布上显示的视频画面。
[0011]根据本发明实施例的第二方面,提供一种多视频窗口层级切换装置,包括:
[0012]检测单元,用于检测需要层级切换的目标视频窗口;
[0013]显示单元,用于将所述目标视频窗口当前的视频画面显示在主线程画布上;
[0014]移除单元,用于将所述目标视频窗口从当前布局中移除;
[0015]设置单元,用于将从当前布局中移除后的所述目标视频窗口的层级设置为最上层;
[0016]添加单元,用于将所述设置为最上层的目标视频窗口添加到原布局中;
[0017]清除单元,用于清除所述主线程画布上显示的视频画面。
[0018]应用本发明实施例,通过检测需要层级切换的目标视频窗口,并将目标视频窗口当前的视频画面显示在主线程画布上,进而将目标视频窗口从当前布局中移除,将从当前布局移除后的目标视频窗口的层级设置为最上层后重新添加到原布局中,并清除主线程画布上显示的视频画面,从而在实现了视频窗口层级切换的同时,避免了视频窗口切换过程中出现黑屏效果,保证了视频窗口切换时视频画面的连贯性,优化了用户体验。
【附图说明】
[0019]图1是本发明实施例提供的一种多视频窗口层级切换方法的流程示意图;
[0020]图2是本发明实施例提供的另一种多视频窗口层级切换方法的流程示意图;
[0021]图3是本发明实施例提供的一种多视频窗口层级切换装置的结构示意图;
[0022]图4是本发明实施例提供的另一种多视频窗口层级切换装置的结构示意图。
【具体实施方式】
[0023]为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
[0024]请参见图1,图1为本发明实施例提供的一种多视频窗口层级切换方法的流程示意图,如图1所示,该多视频窗口层级切换方法包括以下步骤:
[0025]步骤101、检测需要层级切换的目标视频窗口。
[0026]本发明实施例中,上述方法可以应用于包括但不限于智能手机、平板电脑、掌上电脑、PDA(Personal Digital Assistant,个人数字助理)等终端。为便于描述,以下以上述方法的执行主体为终端进行描述。
[0027]本发明实施例中,目标视频窗口可以包括但不限于Surf aceView视频窗口(即通过SurfaceView进行画面清染的视频窗口)或GLSurfaceView视频窗口(即通过GLSurfaceView进行画面渲染的视频窗口),本发明实施例后续不再复述。
[0028]本发明实施例中,当终端中存在多个视频窗口时,终端可以通过检测用户输入的操作,确定需要层级切换的目标视频窗口。
[0029]其中,在本发明实施例中,需要层级切换的目标视频窗口为需要切换至最上层的视频窗口。
[0030]作为一种可选的实施方式,上述步骤101中,检测需要层级切换的目标视频窗口,可以包括以下步骤:
[0031]11)、检测当前的焦点视频窗口;
[0032]12)、判断该焦点视频窗口是否处于最上层;
[0033]13)、若否,则将该焦点视频窗口确定为需要层级切换的目标视频窗口。
[0034]在该实施方式中,终端可以根据用户操作确定当前的焦点视频窗口,即用户当前正在操作的视频窗口,并判断该焦点视频窗口当前是否处于最上层,若该焦点视频窗口未处于最上层,则确定需要将该焦点视频窗口切换为最上层,即确定该焦点视频窗口为需要层级切换的目标视频窗口 ;否则,可以不对该焦点视频窗口进行层级切换处理。
[0035]举例来说,假设终端当前存在两个层叠的视频窗口(两个视频窗口存在重叠部分,但未完全覆盖,分别为视频窗口 1和视频窗口 2),且视频窗口 1当前处于视频窗口 2上层,若终端检测到用户点击视频窗口2,则终端可以确定需要将视频窗口2切换到最上层,即视频窗口为需要层级切换的目标视频窗口。
[0036]进一步地,在该实施方式中,考虑到当终端中存在多个视频窗口时,用户可能会根据需求将某个视频窗口设置为始终处于最前,此时,处于下层的视频窗口即使成为焦点视频窗口也不需要切换到最上层。
[0037]相应地,上述步骤13)中,若焦点视频窗口未处于最上层,上述将焦点视频窗口确定为需要层级切换的目标视频窗口之前,还可以步骤包括以下步骤:
[0038]21)、判断焦点视频窗口的上层是否存在设置为始终处于最前的视频窗口;
[0039]22)、若不存在,则确定执行上述将焦点视频窗口确定为需要层级切换的目标视频窗口的步骤。
[0040]步骤102、将目标视频窗口当前的视频画面显示在主线程画布上。
[0041]本发明实施例中,考虑到View在移动、添加过程中画面几乎不会产生变化,因而,为了避免目标视频窗口在进行层级切换时产生黑屏效果,影响用户体验,当终端需要对目标视频窗口进行层级切换时,可以先将目标视频窗口当前的视频画面显示在主线程画布上,以保证用户能观看到目标视频窗口当前的视频画面,不会出现黑屏效果。
[0042]步骤103、将目标视频窗口从当前布局中移除。
[0043]本发明实施例中,终端将目标视频窗口当前的视频画面显示在主线程画布上后,可以将目标视频窗口从当前布局中移除。
[0044]举例来说,以目标视频窗口为SurfaceView视频窗口为例,将目标视频窗口从当前布局中移除即为将该SurfaceView视频窗口从其所依附的容器(例如播放器)中移除,使其处于未依附状态。
[0045]步骤104、将从当前布局中移除后的目标视频窗口的层级设置为最上层。
[0046]本发明实施例中,终端将目标视频窗口从当前布局中移除后,可以将该从当前布局中移除后的目标视频窗口的层级设置为最上层。
[0047]作为一种可选的实施方式,当目标视频窗口为SurfaceView视频窗口时,上述步骤104中,将从当前布局中移除后的目标视频窗口的层级设置为最上层,可以包括:
[0048]将从当前布局中移除后的目标视频窗口的S u r f a c e V i e w的层级setZOrderMediaOverlay(z向的媒体覆盖顺序设置)()设置为true(真)。
[0049]在该实施方式中,当终端将SurfaceView视频窗口从其依附的容器移除后,可以将该未依附状态的SurfaceView视频窗口 的SurfaceView的层级setZOrderMediaOverlay()设置为true,以将该SurfaceView视频窗口设置为最上层。
[0050]步骤105、将该设置为最上层的目标视频窗口添加到原布局中,并清除主线程画布上显示的视频画面。
[0051 ]本发明实施例中,终端将目标视频窗口的层级设置为最上层后,可以将该设置为最上层的目标视频窗口添加到原布局中,并清除主线程画布上显示的视频画面,从而实现了将目标视频窗口切换到最上层。
[0052]可见,在图1所描述的方法流程中,当需要对目标视频窗口进行层级切换时,通过将目标视频窗口当前的视频画面显示在主线程画布上,以避免视频窗口切换过程中出现黑屏效果,并通过将目标视频窗口从当前布局中移除,并将从当前布局中移除后的目标视频窗口的层级设置为最上层后,重新添加到原布局中,实现目标视频窗口的层级切换,从而,在实现了视频窗口切换的同时,避免了视频窗口切换过程中出现黑屏效果。
[0053]请参见图2,图2为本发明实施例提供的一种多视频窗口层级切换方法的流程示意图,在该实施例中,以视频窗口为SurfaceView视频窗口为例,如图2所示,该多视频窗口层级切换方法包括以下步骤:
[0054]步骤201、检测焦点SurfaceView视频窗口。
[0055]本发明实施例中,当终端中存在多个SurfaceView视频窗口时,终端可以根据用户操作确定当前的焦点Surf aceView视频窗口,即用户当前正在操作的SurfaceView视频窗
□ ο
[0056]步骤202、判断该焦点Surf aceView视频窗口是否处于最上层。若否,则转至步骤203;否则,结束当前流程。
[0057]本发明实施例中,终端检测到焦点SurfaceView视频窗口后,可以判断该焦点SurfaceView视频窗口当前是否处于最上层,若该焦点SurfaceView视频窗口未处于最上层,则确定需要将该焦点SurfaceView视频窗口切换为最上层,即确定该焦点SurfaceView视频窗口为需要层级切换的SurfaceV iew视频窗口 ;否则,可以不对该焦点SurfaceView视频窗口进行层级切换处理。
[0058]步骤203、将焦点Surf aceView视频窗口的视频画面显示在主线程画布上。
[0059]本发明实施例中,当终端确定焦点SurfaceView视频窗口当前未处于最上层时,终端可以将该焦点Surf aceView视频窗口当前的视频画面显示在SurfaceView主线程画布上,即显示在onDraw( —种计算机函数)中。
[0000]步骤204、将焦点SurfaceView视频窗口从当前布局中移除。
[0061]本发明实施例中,终端将焦点SurfaceView视频窗口当前的视频画面显示在主线程画布上后,可以将焦点Surf aceView视频窗口从当前布局中移除,即将该焦点SurfaceView视频窗口从其所依附的容器(例如播放器)中移除,使其处于未依附状态。
[0062]步骤205、将从当前布局中移除后的焦点SurfaceView视频窗口的SurfaceView的层级86七2(^(161]\16(1丨&0¥61'1&7()设置为1^116。
[0063]本发明实施例中,当终端将焦点SurfaceView视频窗口从其依附的容器移除后,可以将该未依附状态的焦点SurfaceView视频窗口的SurfaceView的层级setZOrderMediaOverlay ()设置为true,从而将该焦点SurfaceView视频窗口设置为最上层。
[0064]步骤206、将该移除后的焦点Surf aceView视频窗口重新添加到原布局中,并清除主线程画布上显示的视频画面。
[0065]本发明实施例中,终端将移除后的焦点SurfaceView视频窗口的层级设置为最上层后,可以将该设置为最上层的焦点SurfaceView视频窗口重新添加到原布局中,即将处于未依附状态的焦点SurfaceView视频窗口重新依附到原容器(例如视频播放器)中,并清除主线程画布(onDraw)上显示的视频画面,完成Surf aceView视频窗口层级关系切换。
[0066]通过以上描述可以看出,在本发明实施例提供的技术方案中,通过检测需要层级切换的目标视频窗口,并将目标视频窗口当前的视频画面显示在主线程画布上,进而将目标视频窗口从当前布局中移除,将从当前布局移除后的目标视频窗口的层级设置为最上层后重新添加到原布局中,并清除主线程画布上显示的视频画面,从而在实现了视频窗口层级切换的同时,避免了视频窗口切换过程中出现黑屏效果,保证了视频窗口切换时视频画面的连贯性,优化了用户体验。
[0067]请参见图3,为本发明实施例提供的一种多视频窗口层级切换装置的结构示意图,其中,该多视频窗口层级切换装置可以应用于上述方法实施例中的终端,如图3所示,该多视频窗口层级切换装置可以包括:
[0068]检测单元310,用于检测需要层级切换的目标视频窗口;
[0069]显示单元320,用于将所述目标视频窗口当前的视频画面显示在主线程画布上;
[0070]移除单元330,用于将所述目标视频窗口从当前布局中移除;
[0071 ]设置单元340,用于将从当前布局中移除后的所述目标视频窗口的层级设置为最上层;
[0072]添加单元350,用于将所述设置为最上层的目标视频窗口添加到原布局中;
[0073]清除单元360,用于清除所述主线程画布上显示的视频画面。
[0074]请一并参见图4,为本发明实施例提供的另一种多视频窗口层级切换装置的结构示意图,该实施例在前述图3所示实施例的基础上,所述多视频窗口层级切换装置中,检测单元310可以包括:
[0075]检测子单元311,用于检测当前的焦点视频窗口;
[0076]判断子单元312,用于判断所述焦点视频窗口是否处于最上层;
[0077]确定子单元313,用于若所述判断子单元判断为否,则将所述焦点视频窗口确定为需要层级切换的目标视频窗口。
[0078]在可选实施例中,所述判断子单元312,还可以用于当判断所述焦点视频窗口未处于最上层时,判断所述焦点视频窗口的上层是否存在设置为始终处于最前的视频窗口 ;
[0079]所述确定子单元313,可以具体用于若所述判断子单元312判断为不存在,则将所述焦点视频窗口确定为需要层级切换的目标视频窗口。
[0080]在可选实施例中,所述目标视频窗口为表面视图SurfaceView视频窗口或图像库表面视图GLSurfaceView视频窗口。
[0081]在可选实施例中,所述设置单元340,可以具体用于当所述目标视频窗口为Surf ace View视频窗口时,将所述从当前布局中移除后的所述目标视频窗口的SurfaceView的层级设置z向的媒体覆盖顺序设置setZ0rderMedia0verlay()设置为真true。
[0082]上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0083]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0084]由上述实施例可见,通过检测需要层级切换的目标视频窗口,并将目标视频窗口当前的视频画面显示在主线程画布上,进而将目标视频窗口从当前布局中移除,将从当前布局移除后的目标视频窗口的层级设置为最上层后重新添加到原布局中,并清除主线程画布上显示的视频画面,从而在实现了视频窗口层级切换的同时,避免了视频窗口切换过程中出现黑屏效果,保证了视频窗口切换时视频画面的连贯性,优化了用户体验。
[0085]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0086]应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
【主权项】
1.一种多视频窗口层级切换方法,其特征在于,包括: 检测需要层级切换的目标视频窗口 ; 将所述目标视频窗口当前的视频画面显示在主线程画布上; 将所述目标视频窗口从当前布局中移除; 将从当前布局中移除后的所述目标视频窗口的层级设置为最上层; 将所述设置为最上层的目标视频窗口添加到原布局中,并清除所述主线程画布上显示的视频画面。2.根据权利要求1所述的方法,其特征在于,所述检测需要层级切换的目标视频窗口,包括: 检测当前的焦点视频窗口; 判断所述焦点视频窗口是否处于最上层; 若否,则将所述焦点视频窗口确定为需要层级切换的目标视频窗口。3.根据权利要求2所述的方法,其特征在于,若所述焦点视频窗口未处于最上层,所述将所述焦点视频窗口确定为需要层级切换的目标视频窗口之前,还包括: 判断所述焦点视频窗口的上层是否存在设置为始终处于最前的视频窗口 ; 若不存在,则确定执行将所述焦点视频窗口确定为需要层级切换的目标视频窗口的步骤。4.根据权利要求1-3任一项所述的方法,其特征在于,所述目标视频窗口为表面视图SurfaceView视频窗口或图像库表面视图GLSurfaceView视频窗口。5.根据权利要求4所述的方法,其特征在于,当所述目标视频窗口为SurfaceView视频窗口时,所述将从当前布局中移除后的所述目标视频窗口的层级设置为最上层,包括: 将所述从当前布局中移除后的所述目标视频窗口的SurfaceView的层级设置z向的媒体覆盖顺序设置setZOrderMediaOverlay()设置为真true。6.一种多视频窗口层级切换方法,其特征在于,包括: 检测单元,用于检测需要层级切换的目标视频窗口 ; 显示单元,用于将所述目标视频窗口当前的视频画面显示在主线程画布上; 移除单元,用于将所述目标视频窗口从当前布局中移除; 设置单元,用于将从当前布局中移除后的所述目标视频窗口的层级设置为最上层; 添加单元,用于将所述设置为最上层的目标视频窗口添加到原布局中; 清除单元,用于清除所述主线程画布上显示的视频画面。7.根据权利要求6所述的装置,其特征在于,所述检测单元包括: 检测子单元,用于检测当前的焦点视频窗口; 判断子单元,用于判断所述焦点视频窗口是否处于最上层; 确定子单元,用于若所述判断子单元判断为否,则将所述焦点视频窗口确定为需要层级切换的目标视频窗口。8.根据权利要求7所述的装置,其特征在于, 所述判断子单元,还用于当判断所述焦点视频窗口未处于最上层时,判断所述焦点视频窗口的上层是否存在设置为始终处于最前的视频窗口 ; 所述确定子单元,具体用于若所述判断子单元判断为不存在,则将所述焦点视频窗口确定为需要层级切换的目标视频窗口。9.根据权利要求6-8任一项所述的装置,其特征在于,所述目标视频窗口为表面视图SurfaceView视频窗口或图像库表面视图GLSurfaceView视频窗口。10.根据权利要求9所述的装置,其特征在于, 所述设置单元,具体用于当所述目标视频窗口为SurfaceView视频窗口时,将所述从当前布局中移除后的所述目标视频窗口的SurfaceView的层级设置z向的媒体覆盖顺序设置setZOrderMediaOverlay()设置为真true。
【专利摘要】本发明提供一种多视频窗口层级切换方法及装置,所述方法包括:检测需要层级切换的目标视频窗口;将所述目标视频窗口当前的视频画面显示在主线程画布上;将所述目标视频窗口从当前布局中移除;将从当前布局中移除后的所述目标视频窗口的层级设置为最上层;将所述设置为最上层的目标视频窗口添加到原布局中,并清除所述主线程画布上显示的视频画面。应用本发明实施例可以在实现视频窗口切换的同时,避免视频窗口切换过程中出现黑屏效果。
【IPC分类】H04N21/443, H04N21/485
【公开号】CN105491452
【申请号】CN201510833984
【发明人】黄龙滨
【申请人】浙江宇视科技有限公司
【公开日】2016年4月13日
【申请日】2015年11月25日

最新回复(0)