被覆盖视图的移动方法、装置、电子设备及可读存储介质与流程
未命名
08-02
阅读:86
评论:0

技术领域:
:,尤其涉及一种被覆盖视图的移动方法、装置、电子设备及可读存储介质。
背景技术:
::2.在ios移动操作系统的开发过程中,可能会遇到在有视图弹出后,弹出视图覆盖原有视图内容的问题。3.在弹出视图覆盖原有视图内容时,可以把原有视图整个布局在一个uiscrollview(滚动视图)实例中,在视图弹出后,存储uiscrollview实例的现有偏移量,计算出需要的偏移量,然后设置相关偏移属性为需要的偏移量。此外,还可以把原有视图整个布局在一个uitableview(表格视图)实例或其子类实例中,加个隐藏的输入框控件。此外,还可以调整某个父视图的frame(网页分框)属性。4.以上解决办法存在各种弊端,例如存在工作量大且复杂、计算过程复杂、使用范围较窄以及视图移动没有实际生效等问题,使得这些解决弹出视图覆盖原有视图内容问题的办法不够简单高效。技术实现要素:5.有鉴于此,本技术实施例提供了一种被覆盖视图的移动方法、装置、电子设备及计算机可读存储介质,以解决弹出视图覆盖原有视图内容的问题。6.本技术实施例的第一方面,提供了一种被覆盖视图的移动方法,该方法包括:在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据;根据弹出视图数据获取弹出视图位置、弹出视图后方的被覆盖视图以及指示被覆盖视图进行移动的移动指示数据;在移动指示数据表示被覆盖视图不能够由用户移动时,根据移动指示数据获取指定显示区域的起始位置以及指定显示区域相对于弹出视图的相对位置;根据弹出视图位置、起始位置以及相对位置获取指定显示区域的第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性。7.本技术实施例的第二方面,提供了一种被覆盖视图的移动装置,该装置包括:视图数据获取模块,用于在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据;指示数据获取模块,用于根据弹出视图数据获取弹出视图位置、弹出视图后方的被覆盖视图以及指示被覆盖视图进行移动的移动指示数据;位置数据获取模块,用于在移动指示数据表示被覆盖视图不能够由用户移动时,根据移动指示数据获取指定显示区域的起始位置以及指定显示区域相对于弹出视图的相对位置;偏移模块,用于根据弹出视图位置、起始位置以及相对位置获取指定显示区域的第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性。8.本技术实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。9.本技术实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。10.本技术实施例与现有技术相比存在的有益效果至少包括:本技术实施例通过根据被覆盖试图的指定显示区域以及相对位置确定第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性,简单高效地实现了对被覆盖视图的移动。11.进一步地,本技术实施例的技术方案的实现方法计算简单,不涉及坐标系转换,仅需简单计算差值或无需计算;扩展了功能,实现了根据业务需求对用户交互的支持;可以适用于各种弹出视图覆盖问题,无局限性,并且不会改变现有页面的视图层级和结构。附图说明12.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。13.图1是本技术实施例提供的一种被覆盖视图的移动方法的流程示意图;14.图2是本技术实施例提供的一种被覆盖视图的移动过程的示意图;15.图3是本技术实施例提供的一种被覆盖视图的移动装置的结构示意图;16.图4是本技术实施例提供的一种电子设备的结构示意图。具体实施方式17.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。18.相关技术中,在弹出视图覆盖原有视图内容时,可以把原有视图整个布局在一个uiscrollview(滚动视图)实例中,在视图弹出后,存储uiscrollview实例的现有偏移量,计算出需要的偏移量,然后设置相关偏移属性为需要的偏移量,并在视图消失后,复原这些属性的现有偏移量。该方法可能需要大量视图层级的迁移,工作量大且复杂,容易出错。此外,涉及到多个坐标系之间的转换,计算过程复杂。19.在弹出视图覆盖原有视图内容时,还可以把原有视图整个布局在一个uitableview(表格视图)实例或其子类实例中,加个隐藏的输入框控件。在系统级层面上,如果在uitableview某个表格里面放入输入框控件,当点击这个输入框控件后,键盘会弹出后,tableview会自动偏移,让这个表格的内容显出来。该方法使用范围较窄,只支持在uitableview在键盘弹出时的某些偏移,并且仅支持系统规定的偏移以及垂直方向上的偏移。20.在弹出视图覆盖原有视图内容时,还可以调整某个父视图的frame(网页分框)属性。但在自动布局下,调整某个的父视图的frame可能在刷新后,会重新遵守自动布局的规约,导致视图抖动一下后回到原始位置,没有实际生效。此外,调节frame属性涉及到多个坐标系之间的转换,计算复杂。21.在弹出视图覆盖原有视图内容时,还可以结合以上三个方案,沿着视图层级树向上一直查找父视图,存在uiscrollview实例就调整uiscrollview实例,不存在uiscrollview实例就调整根父视图的frame属性。该方法除具有以上三个方案的缺点外,还因为根父视图的frame由系统指定,即使程序临时调整,一旦转屏或刷新,就会恢复,并且父视图的随意调整会导致视图无法满足业务需求。22.以上几个方案还有个通用缺点,即偏移量是计算得出的,灵活性差;且不支持用户交互,不会出现手动滑到哪里就显示哪里的情况。23.为解决以上问题,本技术实施例提供一种被覆盖视图的移动方案,简单高效地解决弹出视图覆盖原有视图内容的问题。24.本技术实施例的被覆盖视图的移动方案基于ios的uiview(视图)的bounds的origin属性原理实现。其中,bounds的origin是视图在自身坐标系的原点。一个uiview有2个坐标系:父视图的坐标系和自身的坐标系。自身的坐标系是其子视图的“父视图坐标系”。一个uiview的父视图的坐标系由uiview类的frame属性表示,一个uiview的自身坐标系由uiview类的bounds属性表示,一个uiview的自身的中心点在父视图的坐标系下的值由uiview类的center属性表示。其中,center属性描述当前视图的中心点在其父视图中的位置。frame和bounds靠center结合在一起,所以不同的坐标系之间才可以自由进行转换。25.origin有x和y两个属性,它默认是视图的左上角。origin可以被赋值,比如赋值为(x:10,y:10),意味着:“视图的左上角这个点,曾经是(0,0),可是现在改成(10,10)”,所以,子视图会进行相应的偏移:朝左移动了10,朝上移动了10。意味着如果对一个uiview的origin属性赋正数值,其子视图在原来的位置基础上朝左/上偏移,偏移量为数字的绝对值;如果对一个uiview的origin属性赋负数值,其子视图在原来的位置基础上朝右/下偏移,偏移量为数字的绝对值。26.以下为本技术实施例中的名词的解释:27.控件:页面上的单个元素,如按钮,图片,矩形区域等。28.视图:多个控件构成的相对独立的一块区域。29.页面:app(应用程序)整个屏幕的内容,由视图和控件组成。30.uiview:绝大多数控件和视图的基类。控件和视图可以是uiview,也可以是它的某个子类。31.下面将结合附图详细说明根据本技术实施例的被覆盖视图的移动方法和装置。32.图1是本技术实施例提供的一种被覆盖视图的移动方法的流程示意图。本技术实施例提供的方法可以由任意具备计算机处理能力的电子设备执行,例如终端或服务器。如图1所示,该被覆盖视图的移动方法包括:33.步骤s101,在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据。34.步骤s102,根据弹出视图数据获取弹出视图位置、弹出视图后方的被覆盖视图以及指示被覆盖视图进行移动的移动指示数据。35.步骤s103,在移动指示数据表示被覆盖视图不能够由用户移动时,根据移动指示数据获取指定显示区域的起始位置以及指定显示区域相对于弹出视图的相对位置。36.步骤s104,根据弹出视图位置、起始位置以及相对位置获取指定显示区域的第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性。37.在本技术实施例中,可以定义一个被覆盖视图的移动装置的装置类,该装置被引入到app项目中,可以用于实现本技术实施例的被覆盖视图的移动方案。具体地,该装置类应该是一个单例,其生命周期和app生命周期相同,在app启动之初进行实例化。在该装置初始化时,监听自身预定的通知名分别为视图弹出和视图收回的2个通知。具体实现为:装置调用系统类notificationcenter的default属性,再对default属性调用addobserver(_:any,selector:selector,name:nsnotification.name?,object:any?)方法,监听需要的通知。方法的第一个参数传入装置自身(self),第二个参数传入装置自定义的一个函数,函数中是对通知的相应逻辑,第三个参数是要监听的通知名,第四个参数可以传入nil,意思是不限制监听的对象,即不限制谁是通知的发送方。38.上述装置可以存储弹出视图实例、存储本次视图的动作是弹出还是收回、存储需要处理的后部视图实例、存储需要处理的后部视图实例上的指定显示区域以及生成视图弹出的通知名和视图收回的通知名。39.具体地,视图实例包括实例本身以及实例的位置信息。其中,实例的位置信息是一个矩形,有起始点(origin)、宽和高(size)。需要处理的后部视图实例是被弹出视图覆盖了部分内容的后部视图,并且这个视图业务需求要求它的内容有些许滑动以抗覆盖。指定显示区域用于确定后部视图需要抗覆盖的部分。在生成视图弹出的通知名和视图收回的通知名时,可以调用ios系统的notification类的name方法,将定义好的视图弹出的通知名字符串传入,调用ios系统的notification类的name方法,将定义好的视图收回的通知名字符串传入。40.通知和api(applicationprogramminginterface,应用程序编程接口)是装置和外部交互的两种方式。页面等外部请求方可以任选一种方式与装置进行交互。具体地,在视图弹出/收回时,外部可以直接对装置发送对应的通知。在视图弹出/收回时,外部可以调用装置的api,记录视图弹出/收回信息。41.在本技术实施例中,可以预定义一个api以记录视图弹出/收回信息。该api在视图弹出时,由外部请求方调用。该api可以记录弹出视图实例、42.记录是弹出还是收回以及记录弹出视图的位置信息等实例信息。43.在本技术实施例中,还可以预定义一个api以修改系统机制,获取present形式的弹出框的弹出/收回信息。该api在app初始化时被调用,其可以由外部调用,也可以由装置的初始化函数调用。该api可以利用ios方法交换技术,在uiviewcontroller类的present(_,animated:)方法中植入以下两个逻辑中的一个。逻辑之一为:发送视图弹出通知给装置,通知中附带弹出视图的包含位置和大小的矩形区域信息。逻辑之二为:调用api,以获取视图弹出/收回信息,传入弹出视图和弹出视图矩形区域信息。该api还可以在uiviewcontroller类的dismiss(_,animated:)方法中植入逻辑以下两个逻辑中的一个。逻辑之一为:发送视图收回通知给装置,通知中附带弹出视图的包含位置和大小的矩形区域信息。逻辑之一为:调用api,以获取视图弹出/收回信息,传入弹出视图和弹出视图矩形区域信息。44.在本技术实施例中,还可以预定义一个api以获取键盘的弹出/收回信息。该api可以在app初始化时被调用。其可以由外部调用,也可以由装置的初始化函数调用。通过该api,装置可以监听系统在键盘弹出/收回时发送的系统通知。45.在本技术实施例中,还可以预定义一个api,以接受外部对被弹出视图覆盖的后部视图进行位移处理的“要求”,后面简称“要求”api。后部视图即为被覆盖视图。该api的调用时机为以下调用时机中的一个:调用时机一:在一个包含有弹出视图的页面初始化时,由该页面调用。调用时机二:当弹出视图正要弹出的时候,由外部调用,其中,由于系统present方式的弹出视图和键盘视图的正要弹出的时机已被装置封装捕获,所以这2种情况可以由装置调用。46.在本技术实施例中,还可以预定义一个api,以对弹出视图收回后进行复原处理。该api的调用时机为:当弹出视图正要弹出的时候,由外部调用,其中,由于系统present方式的弹出视图和键盘视图的正要弹出的时机已被装置封装捕获,所以这2种情况可以由装置调用。47.由于不同的视图有不同的弹出时通知,在步骤s101之前,可以对以下任一种弹出视图的弹出或收回时机进行监控:中部弹出提示框、弹出键盘、底部弹出卡片以及自定义弹出视图。48.具体地,针对中部弹出提示框而言,ios在中部弹出提示框具体实现上是由系统控件uialertcontroller实现的,也可以由自定义的uiviewcontroller实现。具体地,可以在视图弹出时调用ios系统的uiviewcontroller类的present(_,animated:)方法。在视图收回时调用ios系统的uiviewcontroller类的dismiss(_,animated:)方法。因此,可以实现中部弹出提示框的时机捕获方法的api需要修改系统机制,获取present形式的弹出框的弹出/收回信息。49.具体地,针对弹出键盘而言,ios系统在键盘弹出时,系统会先后发送两个系统通知。分别为:uiresponder.keyboardwillshownotification和uiresponder.keyboarddidshownotification。50.其中,uiresponder.keyboardwillshownotification是键盘即将弹出但还未真正显示在界面上时的通知,但是已附带了键盘即将绘制的矩形区域的位置大小等信息。uiresponder.keyboarddidshownotification是键盘已弹出并显示在界面上时的通知。在键盘收回时,系统会先后发送两个系统通知。51.这两个系统通知分别为:uiresponder.keyboardwillhidenotification和iresponder.keyboarddidhidenotification。52.其中,uiresponder.keyboardwillhidenotification是键盘即将消失的通知,iresponder.keyboarddidhidenotification是键盘已消失的通知。53.因而,获取视图弹出/回收信息api在键盘弹出时,根据业务需求,可以在两个系统通知iresponder.keyboardwillshownotification和uiresponder.keyboarddidshownotification中任选一个进行监听,或者两个通知一起监听。54.获取视图弹出/回收信息api在键盘收回时,根据业务需求,可以在两个系统通知uiresponder.keyboardwillhidenotification和iresponder.keyboarddidhidenotification中任选一个进行监听,或者两个通知一起监听。55.因此,可以实现弹出键盘的时机捕获方法的api需要获取键盘的弹出/收回信息。56.具体地,针对底部弹出卡片而言,ios系统在具体实现上可以由系统控件uialertcontroller实现,也可以由自定义的uiviewcontroller进行实现。这两个系统控件对弹出键盘的时机捕获与对中部弹出提示框的时机捕获的区别是对类的类型设置、动画设置以及位置设置等属性设置的不同。此外,底部弹出卡片可以为由uiactivityviewcontroller类实现的预览卡片。57.以上中部弹出提示框、弹出键盘以及底部弹出卡片三种底部视图,可以在视图弹出时调用ios系统的uiviewcontroller类的present(_,animated:)方法。在视图收回时调用ios系统的uiviewcontroller类的dismiss(_,animated:)方法,因而时机捕获方法与中部弹出提示框的时机捕获方法相同,其api需要修改系统机制,获取present形式的弹出框的弹出/收回信息。58.具体地,针对自定义弹出视图而言,由于自定义的视图的弹出和收回的函数是自定义的,程序已知的,所以,在弹出的函数中发送视图弹出通知给装置或者调用装置提供的api时,通知中附带弹出视图的位置和大小等矩形区域信息,装置记录弹出视图的矩形区域信息;在收回的函数中发送视图收回通知给装置或者调用装置提供的api时,通知中附带弹出视图的位置和大小等矩形区域信息,装置记录弹出视图的矩形区域信息。59.在本技术实施例中,在装置对被弹出视图覆盖的后部视图进行位移处理时,根据业务需求,外部对“要求”api传入三个参数,分别为:需要处理的后部视图实例即被覆盖视图、是否需要用户自由移动该后部视图实例以及在用户不能自由移动该后部视图实例时,指定显示区域以及显示区域想要展示的位置。60.具体地,在页面上,并非所有被覆盖的视图都要进行移动调整,因此,可以在被覆盖视图中选取部分构成指定显示区域。61.进一步地,指定显示区域可以允许或者不允许用户自由移动。因此,需要确定是否需要用户自由移动该后部视图实例即指定显示区域。如果用户不能自由移动该后部视图实例,则可以根据业务需求规定一个指定显示区域以及显示区域想要展示的位置。如果用户能够自由移动该后部视图实例,该后部视图实例可以由用户以手势交互动作进行自由滑动或者缩放,以便于查看想要看的区域。进一步地,可以指定手势的具体类型为滑动手势、缩放手势或者点击手势,且并不局限于此。62.在本技术实施例中,如果不需要用户自由移动该后部视图实例,在步骤s103中,可以根据“要求”api参数传入的指定显示区域以及显示区域的位置,计算后部视图实例的bounds的origin所需偏移量。该指定显示区域的位置即为指定显示区域相对于弹出视图的相对位置。63.具体地,获取该相对位置,可以获取指定显示区域相对于弹出视图的相对距离;也可以获取指定显示区域相对于弹出视图的相对方位;还可以获取指定显示区域不能完全显示时指定显示区域的中心部位。64.具体地,相对方位包括指定显示区域的位置在弹出视图的哪个方向上,例如,上方、下方、左方、右方、斜上方以及斜下方。指定显示区域不能完全显示时,指定显示区域的中心部位可以为指定显示区域的中心,或者指定显示区域的上部某位置,或者指定显示区域的下部某位置。65.以简单的指定显示区域相对于弹出视图的相对距离为例,在步骤s104中,可以根据弹出视图位置和相对位置获取指定显示区域的目标位置;根据指定显示区域的起始位置和目标位置获取第一位置偏移量。66.具体地,如图2所示,在页面201中,指定显示区域202的起始位置为(x:100,y:500),大小为(width:100,height:80)。67.目标位置相对弹出视图203的位置为斜上部,以它们的原点为准进行比较,指定显示区域距离弹出视图的左上角即原点有(x:-60,y:-180)的间距。68.由于弹出视图位置和大小已被装置存储,所以可以直接获取弹出视图的区域的位置的x值和y值。69.其中,获取x值可以采用以下两种方式中的一种:访问弹出视图的区域的frame属性,访问其origin属性,再访问其x属性,得到x值为40。访问弹出视图的区域的frame属性,访问其minx属性,得到x值为40。获取y值可以采用以下两种方式中的一种:访问弹出视图的区域的frame属性,访问其origin属性,再访问其y属性,得到y值为200。访问弹出视图的区域的frame属性,访问其miny属性,得到y值为200。70.进一步地,可以计算出指定显示区域在x方向上的当前位置为:newx=弹出视图的区域的x值+显示区域相对弹出框的位置=40-60=-20;计算出指定显示区域在y方向上的当前位置为:newy=弹出视图的区域的y值+显示区域相对弹出框的位置=200-180=20。71.最后,得出指定显示区域的偏移量即指定显示区域的起始位置-指定显示区域的目标位置的计算结果为:x方向上:x~=100–(-20)=120,y方向上:y~=500–(20)=480。72.根据以上计算结果,可以将参数的后部视图实例的bounds的origin属性设置为计算出来的偏移量(x:120,y:480)。73.在本技术实施例中,在移动指示数据确定被覆盖视图能够由用户移动时,可以为被覆盖视图增加命令手势;在接收到用户对被覆盖视图进行命令手势操作生成命令手势信号时,根据命令手势信号获取第二位置偏移量,并根据第二位置偏移量修改指定显示区域在自身坐标系的位置属性。74.具体地,根据业务需求可以给后部视图实例加上滑动、缩放以及点击等手势,支持用户自由查看后部视图。以创建滑动手势举例,可以调用uipangesturerecognizer类的初始化函数,传入手势交互处理函数。用户在滑动时,系统会调用手势交互处理函数,所以在手势交互处理函数中写逻辑。75.在接收到用户对被覆盖视图进行命令手势操作生成命令手势信号时,可以通过调用手势的state属性,得到其值,获取手势当前的状态。如果为.began或.changed时,就可以获取到用户当前手指的点位置。调用手势的translation(in:)函数,这个函数的参数要求是手势所在的视图,所以传入后部视图实例。函数的返回值是手势位移的增量,即第二位置偏移量。76.在获取完增量后,需要对手势调用settranslation(_,in:)方法,第一个参数传入.zero,第二个参数传入后部视图实例,以销毁增量。77.根据第二位置偏移量修改指定显示区域在自身坐标系的位置属性时,可以将参数的后部视图实例的bounds的origin属性设置第二位置偏移量。78.在本技术实施例中,装置可以感知视图的收回。具体地,可以根据外部通知或者应用程序接口记录到的视图的弹出或者收回信息确定弹出视图收回。79.在步骤s104之后,响应于获取到对弹出视图进行监控得到的收回视图数据,根据起始位置还原指定显示区域在自身坐标系的位置属性。即将参数的后部视图实例的bounds的origin属性设置为视图弹出时的起始位置的值。80.本技术实施例的技术方案设计了一种基于ios系统的解决视图覆盖问题的方案的实现方法。该实现方法在底层逻辑上和现有技术的方案有明显区别,具体地,该实现方法计算简单,不涉及坐标系转换,仅需简单计算差值或无需计算;扩展了功能,实现了根据业务需求对用户交互的支持;可以适用于各种弹出视图覆盖问题,无局限性,并且不会改变现有页面的视图层级和结构。81.根据本技术实施例的被覆盖视图的移动方法,通过根据被覆盖试图的指定显示区域以及相对位置确定第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性,简单高效地实现了对被覆盖视图的移动。82.下述为本技术装置实施例,可以用于执行本技术方法实施例。下文描述的被覆盖视图的移动装置与上文描述的被覆盖视图的移动方法可相互对应参照。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。83.图3是本技术实施例提供的一种被覆盖视图的移动装置的示意图。如图3所示,本技术实施例中的被覆盖视图的移动装置包括:84.视图数据获取模块301,用于在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据。85.指示数据获取模块302,用于根据弹出视图数据获取弹出视图位置、弹出视图后方的被覆盖视图以及指示被覆盖视图进行移动的移动指示数据。86.位置数据获取模块303,用于在移动指示数据表示被覆盖视图不能够由用户移动时,根据移动指示数据获取指定显示区域的起始位置以及指定显示区域相对于弹出视图的相对位置。87.偏移模块304,用于根据弹出视图位置、起始位置以及相对位置获取指定显示区域的第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性。88.在本技术实施例中,偏移模块304还用于在移动指示数据确定被覆盖视图能够由用户移动时,为被覆盖视图增加命令手势,并在接收到用户对被覆盖视图进行命令手势操作生成命令手势信号时,根据命令手势信号获取第二位置偏移量,并根据第二位置偏移量修改指定显示区域在自身坐标系的位置属性。89.在本技术实施例中,偏移模块304还用于响应于获取到对弹出视图进行监控得到的收回视图数据,根据起始位置还原指定显示区域在自身坐标系的位置属性。90.本技术实施例中的被覆盖视图的移动装置还可以包括确定模块,用于根据外部通知或者应用程序接口记录到的视图的弹出或者收回信息确定弹出视图收回。91.位置数据获取模块303,还可以用于获取指定显示区域相对于弹出视图的相对距离、获取指定显示区域相对于弹出视图的相对方位;以及获取指定显示区域不能完全显示时指定显示区域的中心部位。92.视图数据获取模块301,还用于对以下任一种弹出视图的弹出或收回时机进行监控:中部弹出提示框、弹出键盘、底部弹出卡片以及自定义弹出视图。93.偏移模块304,还可以用于根据弹出视图位置和相对位置获取指定显示区域的目标位置;以及据指定显示区域的起始位置和目标位置获取第一位置偏移量。94.由于本技术的示例实施例的被覆盖视图的移动装置的各个功能模块与上述被覆盖视图的移动方法的示例实施例的步骤对应,因此对于本技术装置实施例中未披露的细节,请参照本技术上述的被覆盖视图的移动方法的实施例。95.根据本技术实施例的被覆盖视图的移动装置,通过根据被覆盖试图的指定显示区域以及相对位置确定第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性,简单高效地实现了对被覆盖视图的移动。96.图4是本技术实施例提供的电子设备4的示意图。如图4所示,该实施例的电子设备4包括:处理器401、存储器402以及存储在该存储器402中并且可在处理器401上运行的计算机程序403。处理器401执行计算机程序403时实现上述各个方法实施例中的步骤。或者,处理器401执行计算机程序403时实现上述各装置实施例中各模块的功能。97.电子设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备4可以包括但不仅限于处理器401和存储器402。本领域技术人员可以理解,图4仅仅是电子设备4的示例,并不构成对电子设备4的限定,可以包括比图示更多或更少的部件,或者不同的部件。98.处理器401可以是中央处理单元(centralprocessingunit,cpu),也可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。99.存储器402可以是电子设备4的内部存储单元,例如,电子设备4的硬盘或内存。存储器402也可以是电子设备4的外部存储设备,例如,电子设备4上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。存储器402还可以既包括电子设备4的内部存储单元也包括外部存储设备。存储器402用于存储计算机程序以及电子设备所需的其它程序和数据。100.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。101.集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。102.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种被覆盖视图的移动方法,其特征在于,所述方法包括:在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据;根据所述弹出视图数据获取弹出视图位置、所述弹出视图后方的被覆盖视图以及指示所述被覆盖视图进行移动的移动指示数据;在所述移动指示数据表示所述被覆盖视图不能够由用户移动时,根据所述移动指示数据获取指定显示区域的起始位置以及所述指定显示区域相对于所述弹出视图的相对位置;根据所述弹出视图位置、所述起始位置以及所述相对位置获取所述指定显示区域的第一位置偏移量,并根据所述第一位置偏移量修改所述指定显示区域在自身坐标系的位置属性。2.根据权利要求1所述的方法,其特征在于,根据所述弹出视图数据获取弹出视图位置、所述弹出视图后方的被覆盖视图以及指示所述被覆盖视图进行移动的移动指示数据之后,所述方法还包括:在所述移动指示数据确定所述被覆盖视图能够由用户移动时,为所述被覆盖视图增加命令手势;在接收到用户对被覆盖视图进行命令手势操作生成命令手势信号时,根据所述命令手势信号获取第二位置偏移量,并根据所述第二位置偏移量修改所述指定显示区域在自身坐标系的位置属性。3.根据权利要求1所述的方法,其特征在于,根据所述第一位置偏移量修改所述指定显示区域在自身坐标系的位置属性之后,所述方法还包括:响应于获取到对所述弹出视图进行监控得到的收回视图数据,根据所述起始位置还原所述指定显示区域在自身坐标系的位置属性。4.根据权利要求3所述的方法,其特征在于,响应于获取到对所述弹出视图进行监控得到的收回视图数据之前,所述方法还包括:根据外部通知或者应用程序接口记录到的视图的弹出或者收回信息确定所述弹出视图收回。5.根据权利要求1所述的方法,其特征在于,根据所述移动指示数据获取指定显示区域的起始位置以及所述指定显示区域相对于所述弹出视图的相对位置,至少包括以下任一项:获取所述指定显示区域相对于所述弹出视图的相对距离;获取所述指定显示区域相对于所述弹出视图的相对方位;以及,获取所述指定显示区域不能完全显示时所述指定显示区域的中心部位。6.根据权利要求1所述的方法,其特征在于,获取对弹出视图进行监控得到的弹出视图数据之前,所述方法还包括:对以下任一种弹出视图的弹出或收回时机进行监控:中部弹出提示框、弹出键盘、底部弹出卡片以及自定义弹出视图。7.根据权利要求1所述的方法,其特征在于,根据所述弹出视图位置、所述起始位置以及所述相对位置获取所述指定显示区域的第一位置偏移量,包括:根据所述弹出视图位置和所述相对位置获取所述指定显示区域的目标位置;根据所述指定显示区域的起始位置和所述目标位置获取所述第一位置偏移量。
8.一种被覆盖视图的移动装置,其特征在于,所述装置包括:视图数据获取模块,用于在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据;指示数据获取模块,用于根据所述弹出视图数据获取弹出视图位置、所述弹出视图后方的被覆盖视图以及指示所述被覆盖视图进行移动的移动指示数据;位置数据获取模块,用于在所述移动指示数据表示所述被覆盖视图不能够由用户移动时,根据所述移动指示数据获取指定显示区域的起始位置以及所述指定显示区域相对于所述弹出视图的相对位置;偏移模块,用于根据所述弹出视图位置、所述起始位置以及所述相对位置获取所述指定显示区域的第一位置偏移量,并根据所述第一位置偏移量修改所述指定显示区域在自身坐标系的位置属性。9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
技术总结
本申请提供了一种被覆盖视图的移动方法、装置、电子设备及可读存储介质。该方法包括:在当前页面有视图被弹出时,获取对弹出视图进行监控得到的弹出视图数据;根据弹出视图数据获取弹出视图位置、弹出视图后方的被覆盖视图以及指示被覆盖视图进行移动的移动指示数据;在移动指示数据表示被覆盖视图不能够由用户移动时,根据移动指示数据获取指定显示区域的起始位置以及指定显示区域相对于弹出视图的相对位置;根据弹出视图位置、起始位置以及相对位置获取指定显示区域的第一位置偏移量,并根据第一位置偏移量修改指定显示区域在自身坐标系的位置属性。本申请的技术方案可以简单高效地解决弹出视图覆盖原有视图内容的问题。效地解决弹出视图覆盖原有视图内容的问题。效地解决弹出视图覆盖原有视图内容的问题。
技术研发人员:陈裕聪 叶松林
受保护的技术使用者:成都赛力斯科技有限公司
技术研发日:2023.04.28
技术公布日:2023/8/1
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/