应用程序的视图联动处理方法、设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种应用程序的视图联动处理方法、设备及存储介质。
背景技术
近年来,终端设备上安装的应用程序提供的功能越来越多,内容越来越丰富,往往在一个显示界面上展示多种功能和/或内容。其中的一些功能和/或内容存在关联性,因此会将关联的视图进行联动处理。
现有的视图联动实现方式为:存在联动关系的视图控件各自响应本视图控件的联动触发事件,并分别监听从视图控件的响应事件,以进行联动。
上述实现方式存在循环调用的问题,例如,主菜单中的视图与从菜单中的视图存在联动关系,当终端用户拖动主菜单中的视图,主菜单响应终端用户的拖动而移动视图,从菜单监听到主菜单的视图移动事件而移动本菜单中的视图,主菜单监听到从菜单的视图移动事件,也会移动本菜单中的视图,如此循环。循环调用可能会导致应用程序运行异常。
发明内容
为解决上述现有视图联动方式存在循环调用的问题,本申请实施例提出一种应用程序的视图联动处理方法、设备和存储介质。
第一方面,本申请实施例提供一种应用程序的视图联动处理方法,该方法包括:
当存在联动关系的任一视图控件接收到触发事件,存在联动关系的视图控件中的主视图控件响应该触发事件,执行响应事件;
存在联动关系的从视图控件根据该主视图控件的响应事件进行联动。
本申请实施例提供的方法在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
本申请实施例中,当存在联动关系的任一视图控件接收到触发事件,存在联动关系的视图控件中的主视图控件响应该触发事件,执行响应事件,其实现方式有多种。
作为举例而非限定,在一种实现方式中,主视图控件监听存在联动关系的从视图控件的触发事件,响应监听到的该触发事件,执行响应事件。在另一种实现方式中,当存在联动关系的任一从视图控件接收到触发事件,将该触发事件传递给主视图控件,主视图控件响应触发事件,执行响应事件。
其中,由从视图控件将自身的触发事件传递给主视图控件,可以确保该触发事件仅由主视图控件响应,从视图控件将无法响应该触发事件。在某些终端操作系统中,主视图控件监听并响应从视图控件的触发事件,从视图控件也不再能响应该触发事件。因此,无论采用上述哪种实现方式,都能够确保触发事件统一由主视图控件响应,从而有效避免上述循环调用的情况。
在上述任意方法实施例的基础上,存在联动关系的从视图控件根据主视图控件的响应事件进行联动的实现方式有多种。
作为举例而非限定,其中一种实现方式包括:存在联动关系的从视图控件监听主视图控件的响应事件,根据监听到的响应事件进行联动。另一种实现方式中,主视图控件触发存在联动关系的从视图控件调用联动实现方法响应响应事件。
无论采用上述哪种实现方式,都能保证从视图控件有效实现与主视图控件的视图联动。
在上述任意方法实施例的基础上,上述触发事件的事件参数包括触发事件的屏幕坐标,那么,主视图响应该触发事件,根据该触发事件的屏幕坐标进行坐标映射,根据坐标映射结果执行响应事件。
若触发事件发生在从视图控件,主视图控件为了准确做出响应,需要根据从视图控件的触发事件所在屏幕坐标进行坐标转换,基于转换之后的屏幕坐标执行响应事件,从而确保准确响应。
第二方面,本发明实施例提供一种终端设备,包括:
存在联动关系的视图控件中的主视图控件,用于当存在联动关系的任一视图控件接收到触发事件,响应所述触发事件,执行响应事件;
存在联动关系的从视图控件,用于根据所述主视图控件的响应事件进行联动。
本申请实施例提供的终端设备在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
本申请实施例中,主视图控件的实现方式有多种。
作为举例而非限定,在一种实现方式中,主视图控件监听存在联动关系的从视图控件的触发事件,响应监听到的该触发事件,执行响应事件。在另一种实现方式中,当存在联动关系的任一从视图控件接收到触发事件,将该触发事件传递给主视图控件,主视图控件响应触发事件,执行响应事件。
其中,由从视图控件将自身的触发事件传递给主视图控件,可以确保该触发事件仅由主视图控件响应,从视图控件将无法响应该触发事件。在某些终端操作系统中,主视图控件监听并响应从视图控件的触发事件,从视图控件也不再能响应该触发事件。因此,无论采用上述哪种实现方式,都能够确保触发事件统一由主视图控件响应,从而有效避免上述循环调用的情况。
在上述任意终端设备实施例的基础上,存在联动关系的从视图控件根据主视图控件的响应事件进行联动的实现方式有多种。
作为举例而非限定,其中一种实现方式包括:存在联动关系的从视图控件监听主视图控件的响应事件,根据监听到的响应事件进行联动。另一种实现方式中,主视图控件触发存在联动关系的从视图控件调用联动实现方法响应响应事件。
无论采用上述哪种实现方式,都能保证从视图控件有效实现与主视图控件的视图联动。
在上述任意终端设备实施例的基础上,上述触发事件的事件参数包括触发事件的屏幕坐标,主视图控件用于响应该触发事件,根据该触发事件的屏幕坐标进行坐标映射,根据坐标映射结果执行响应事件。
若触发事件发生在从视图控件,主视图控件为了准确做出响应,需要根据从视图控件的触发事件所在屏幕坐标进行坐标转换,基于转换之后的屏幕坐标执行响应事件,从而确保准确响应。
第三方面,本发明实施例提供一种终端设备,包括处理器和存储器;
存储器用于存储执行上述任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本申请实施例提供的终端设备在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
第四方面,本发明实施例提供一种计算机可读存储介质,存储有实现上述任意方法实施例的程序。
本申请实施例提供的计算机可读存储介质中存储的程序在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
附图说明
图1为本申请实施例提供的应用程序的视图联动处理方法流程图;
图2A为本申请一个实施例提供的应用程序视图联动的第一状态示意图;
图2B为本申请一个实施例提供的应用程序视图联动的第二状态示意图;
图3A为本申请另一个实施例提供的应用程序视图联动的第一状态示意图;
图3B为本申请另一个实施例提供的应用程序视图联动的第二状态示意图;
图4为本申请一个实施例提供的终端设备的框图;
图5为本申请另一个实施例提供的终端设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
本申请实施例提供一种应用程序的视图联动处理方法,应用于终端设备,如图1所示,本申请实施例提供的方法包括如下操作:
步骤101、当存在联动关系的任一视图控件接收到触发事件,存在联动关系的视图控件中的主视图控件响应该触发事件,执行响应事件。
其中,触发事件是指可以引起视图联动的触发事件,例如拖动事件会引起视图联动移动,那么拖动事件就是本申请所指的触发事件,又例如点击事件会引起视图联动切换,那么点击事件就是本申请所指的触发事件。
其中,响应事件是指针对触发事件做出的响应。例如,主视图控件为了响应拖动事件,控制本视图控件的视图进行移动,那么,移动事件即为响应事件。又例如,主视图控件为了响应点击事件,控制本视图控件的视图进行切换,那么,视图切换事件即为响应事件。
实际应用中,可以预先指定主视图控件及从视图控件,本申请实施例不对具体指定规则进行限定,实际应用中,可以根据需要指定。
步骤102、存在联动关系的从视图控件根据该主视图控件的响应事件进行联动。
实际应用中,可以根据需要定义联动策略,即如何根据响应事件若响应事件进行联动。例如,若响应事件为移动事件,那么联动即跟随移动,若响应事件为视图切换事件,那么联动即跟随切换本视图控件的视图。
本申请实施例提供的方法在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,主视图控件通过响应触发事件而执行响应事件,不再通过监听其他视图控件的响应事件而联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
本申请实施例中,当存在联动关系的任一视图控件接收到触发事件,存在联动关系的视图控件中的主视图控件响应该触发事件,执行响应事件,其实现方式有多种。
作为举例而非限定,在一种实现方式中,主视图控件监听存在联动关系的从视图控件的触发事件,响应监听到的该触发事件,执行响应事件。在另一种实现方式中,当存在联动关系的任一从视图控件接收到触发事件,将该触发事件传递给主视图控件,主视图控件响应触发事件,执行响应事件。
其中,由从视图控件将自身的触发事件传递给主视图控件,可以确保该触发事件仅由主视图控件响应,从视图控件将无法响应该触发事件。在某些终端操作系统(例如安卓操作系统)中,主视图控件监听并响应从视图控件的触发事件,从视图控件也不再能响应该触发事件。因此,无论采用上述哪种实现方式,都能够确保触发事件统一由主视图控件响应,从而有效避免上述循环调用的情况。
在上述任意方法实施例的基础上,存在联动关系的从视图控件根据主视图控件的响应事件进行联动的实现方式有多种。
作为举例而非限定,其中一种实现方式包括:存在联动关系的从视图控件监听主视图控件的响应事件,根据监听到的响应事件进行联动。另一种实现方式中,主视图控件触发存在联动关系的从视图控件调用联动实现方法响应响应事件。
其中,联动实现方法及根据该实现与响应事件联动的方法。实际应用中,可以根据需要配置联动策略,定义联动实现方法。例如,若响应事件为移动事件,联动为跟随移动,那么联动实现方法即控制视图移动的方法,若响应事件为视图切换事件,联动为跟随切换本视图控件的视图,那么联动实现方法即为控制视图切换的方法。
无论采用上述哪种实现方式,都能保证从视图控件有效实现与主视图控件的视图联动。
在上述任意方法实施例的基础上,上述触发事件的事件参数包括触发事件的屏幕坐标,那么,主视图响应该触发事件,根据该触发事件的屏幕坐标进行坐标映射,根据坐标映射结果执行响应事件。
其中,可以根据发生触发事件的视图控件与主视图控件的屏幕坐标进行坐标映射。对于不同步联动,还可以结合具体的联动规则进行坐标映射。
其中,若在主视图控件发生触发事件,则不需要进行坐标映射。
若触发事件发生在从视图控件,主视图控件为了准确做出响应,需要根据从视图控件的触发事件所在屏幕坐标进行坐标转换,基于转换之后的屏幕坐标执行响应事件,从而确保准确响应。
下面以具体应用场景为例,对本发明实施例提供的方法进行说明。
移动终端上的应用程序中的视图控件A和视图控件B为存在联动关系的视图控件,预先指定视图控件A为主视图控件,视图控件B为从视图控件。
在一个场景中,视图控件A与视图控件B的联动方式为视图联动移动,在应用程序运行过程中,如图2A所示,若终端用户向右拖动视图控件B中的视图,那么,视图控件B将检测到的拖动事件传递给视图控件A,如图2B所示,视图控件A响应该拖动事件而向右移动本视图控件中的视图,视图控件B监听到视图控件A中的视图移动事件,按照预定的联动规则向右移动本视图控件中的视图。
在另一个场景中,视图控件A与视图控件B的联动方式为视图联动切换,在应用程序运行过程中,如图3A所示,若终端用户点击视图控件B中的视图,那么,视图控件B将检测到的拖动事件传递给视图控件A,如图3B所示,视图控件A响应该点击事件而将本视图控件中的视图11切换为视图12,视图控件B监听到视图控件A中的视图切换事件,按照预定的联动规则将本视图控件中的视图21切换为视图22。
基于与方法同样的发明构思,本申请实施例提供一种终端设备,如图4所示,包括:
存在联动关系的视图控件中的主视图控件401,用于当存在联动关系的任一视图控件接收到触发事件,响应所述触发事件,执行响应事件;
存在联动关系的从视图控件402,用于根据所述主视图控件的响应事件进行联动。
本申请实施例提供的终端设备在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
本申请实施例中,主视图控件的实现方式有多种。
作为举例而非限定,在一种实现方式中,主视图控件监听存在联动关系的从视图控件的触发事件,响应监听到的该触发事件,执行响应事件。在另一种实现方式中,当存在联动关系的任一从视图控件接收到触发事件,将该触发事件传递给主视图控件,主视图控件响应触发事件,执行响应事件。
其中,由从视图控件将自身的触发事件传递给主视图控件,可以确保该触发事件仅由主视图控件响应,从视图控件将无法响应该触发事件。在某些终端操作系统中,主视图控件监听并响应从视图控件的触发事件,从视图控件也不再能响应该触发事件。因此,无论采用上述哪种实现方式,都能够确保触发事件统一由主视图控件响应,从而有效避免上述循环调用的情况。
在上述任意终端设备实施例的基础上,存在联动关系的从视图控件根据主视图控件的响应事件进行联动的实现方式有多种。
作为举例而非限定,其中一种实现方式包括:存在联动关系的从视图控件监听主视图控件的响应事件,根据监听到的响应事件进行联动。另一种实现方式中,主视图控件触发存在联动关系的从视图控件调用联动实现方法响应响应事件。
无论采用上述哪种实现方式,都能保证从视图控件有效实现与主视图控件的视图联动。
在上述任意终端设备实施例的基础上,上述触发事件的事件参数包括触发事件的屏幕坐标,主视图控件用于响应该触发事件,根据该触发事件的屏幕坐标进行坐标映射,根据坐标映射结果执行响应事件。
若触发事件发生在从视图控件,主视图控件为了准确做出响应,需要根据从视图控件的触发事件所在屏幕坐标进行坐标转换,基于转换之后的屏幕坐标执行响应事件,从而确保准确响应。
上述各实施例中的移动终端可以包括智能手机、掌上电脑、平板电脑、带显示屏的可穿戴设备、车载电脑、智能音箱、个人计算机等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的移动终端的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
基于与方法同样的发明构思,本申请实施例提供一种终端设备,包括处理器和存储器;
存储器用于存储执行上述任意方法实施例的程序;
处理器被配置为执行存储器中存储的程序。
本申请实施例提供的终端设备在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
如图5所示,本申请实施例提供的终端设备不仅包括处理器和存储器,还包括输入设备(例如触摸屏、摄像头、传声器等)、输出设备(例如显示屏、扬声器等)、通信模块、电源模块。
其中,存储器、输入设备、输出设备、通信模块、电源模块通过串口、总线或USB接口与处理器连接。其中,对于单处理器移动终端,处理器即CPU(中央处理器);对于双处理器移动终端,处理器包括主处理器和从处理器,由其主处理器执行应用程序实现本发明实施例提供的方法,若其中需要与外界进行通信,则由从处理器控制通信模块配合实现;对于包含GPU(图形处理器)和CPU的终端设备,处理器是指GPU和CPU,由GPU和CPU配合或由CPU单独实现本申请实施例提供的方法。
其中,终端设备的存储器可以但不仅限于包括:Flash(闪存)存储器、RAM(随机存取存储器)、ROM(只读存储器)等。RAM主要用于存储终端设备运行时的程序和数据,需要执行的程序或者需要处理的数据都必须先装入RAM内。ROM主要用于检查终端设备操作系统的配置情况,并提供最基本的输入输出(I/O)程序。Flash存储器是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)存储器,数据删除不是以单个的字节为单位,而是以固定的区块为单位。由于Flash存储器断电时仍能保存数据,它通常被用来保存设置信息,如用户对手机的设置信息等。
应当指出的是,针对不同的终端设备(单处理器智能手机、双处理器智能手机、智能穿戴设备、平板电脑等等),其可能包括比图5所示的终端设备更多或更少的硬件结构,但只要包括存储器和处理器,且能够实现上述方法实施例的功能,均在本公开的保护范围内。
基于与方法同样的发明构思,本申请实施例提供一种计算机可读存储介质,存储有实现上述任意方法实施例的程序。
本申请实施例提供的计算机可读存储介质中存储的程序,在实现应用程序的视图联动时,统一由主视图控件响应存在联动关系的各个视图控件的触发事件,从视图控件不再响应自身的触发事件。即无论其中哪个视图控件存在触发事件,都是由主视图控件来响应并执行响应事件,进而由从视图控件根据该响应事件执行联动,这种实现方式可避免循环调用的问题,进而有助于避免由于循环调用导致的应用程序异常。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
上述所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。