一种控件呈现方法、存储介质、设备及系统与流程

文档序号:16246564发布日期:2018-12-11 23:38阅读:119来源:国知局
一种控件呈现方法、存储介质、设备及系统与流程

本发明涉及应用开发技术领域,具体来讲是一种控件呈现方法、存储介质、设备及系统。

背景技术

随着移动互联技术的快速发展,移动终端设备(例如手机、平板电脑等)已日益普及,并且移动终端设备提供的功能也越来越多。通常情况下,用户可以自由地在移动终端设备上根据需要安装各种各样的app(application,应用程序),例如用户可以在手机上安装直播应用来观看在线直播。

实际应用中,随着应用程序开发技术的不断发展,用户对应用程序的界面效果要求也越来越高,特别是对应用程序的控件呈现效果更加挑剔。但是,现有的应用程序的控件呈现效果由于各种原因无法满足用户的高要求:要么控件出现的过于突然,有的会在很短的时间内(小于0.1秒)呈现在用户面前,会给用户一种很突兀的感觉;要么控件出现的过于平淡,特别是在控件非常多的界面平淡的呈现某个控件,将无法很好的引起用户的注意。总之,现有控件呈现效果的用户体验较差,无法满足用户的高要求。因此,如何设计出优化的控件呈现方案,给用户较好的用户体验,是本领域人员亟待解决的问题。



技术实现要素:

本发明的目的是为了克服上述背景技术的不足,提供一种控件呈现方法、存储介质、设备及系统,通过给控件增加重力碰撞动画的方式使控件的呈现既不会突兀又能有效吸引用户的注意,用户体验佳,满足了用户的高要求。

为达到以上目的,本发明采取的技术方案是:提供一种控件呈现方法,该方法包括以下步骤:

s1、当收到在应用程序的界面呈现某个指定控件的指令时,判断应用程序的界面中是否已存在该指定控件,若不存在,转入步骤s2,若存在,转入步骤s3;

s2、在应用程序的界面内创建指定控件并进行初始化设置;

s3、为指定控件添加重力碰撞的动画效果;

s4、执行添加了重力碰撞的动画效果的指定控件,使指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上。

在上述技术方案的基础上,步骤s1所述判断应用程序的界面中是否已存在该指定控件的具体流程包括:判断应用程序的界面中是否存在该指定控件的父视图superview,若存在该指定控件的父视图superview,则判定应用程序的界面中已存在该指定控件;否则,判定应用程序的界面中不存在该指定控件。

在上述技术方案的基础上,步骤s3具体包括以下流程:

s301、设置重力碰撞的动画效果的起点坐标值和终点坐标值;

s302、使用重力动画创建函数创建重力动画,并使用内存分配函数为创建的重力动画分配内存;

s303、使用重力动画添加函数将创建的重力动画添加到所述指定控件上,并将该重力动画的代理设置为当前视图;

s304、使用重力行为创建函数创建重力行为,并使用内存分配函数为创建的重力行为分配内存;将该重力行为的重力大小设置为预设的重力值;

s305、使用行为添加函数将创建的重力行为添加到创建的重力动画上;

s306、使用碰撞行为创建函数创建碰撞行为,并使用内存分配函数为创建的碰撞行为分配内存;将碰撞行为的碰撞模式设置为任何对象都会发生碰撞;

s307、使用贝塞尔曲线创建函数创建贝塞尔曲线;使用贝塞尔曲线添加函数将创建的贝塞尔曲线添加到创建的碰撞行为上;

s308、使用行为添加函数将碰撞行为添加到创建的重力动画上。

本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述控件呈现方法的步骤。

本发明还提供一种控件呈现设备,包括存储器、处理器及存储在存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述控件呈现方法的步骤。

本发明还提供一种控件呈现系统,该系统包括控件判断模块、控件创建模块、控件动画添加模块、控件呈现模块;

所述控件判断模块用于:当收到在应用程序的界面呈现某个指定控件的指令时,判断应用程序的界面中是否已存在该指定控件,若不存在,向控件创建模块发送控件创建信号,若存在,向控件动画添加模块发送控件动画添加信号;

所述控件创建模块用于:收到控件创建信号后,在应用程序的界面内创建指定控件并进行初始化设置;向控件动画添加模块发送控件动画添加信号;

所述控件动画添加模块用于:收到控件动画添加信号后,为指定控件添加重力碰撞的动画效果;向控件呈现模块发送控件呈现信号;

所述控件呈现模块用于:收到控件呈现信号后,执行添加了重力碰撞的动画效果的指定控件,使指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上。

在上述技术方案的基础上,所述控件判断模块判断应用程序的界面中是否已存在该指定控件的具体流程包括:判断应用程序的界面中是否存在该指定控件的父视图superview,若存在该指定控件的父视图superview,则判定应用程序的界面中已存在该指定控件;否则,判定应用程序的界面中不存在该指定控件。

在上述技术方案的基础上,所述控件创建模块包括控件创建及内存分配子模块、控件坐标值设置子模块;所述控件创建及内存分配子模块用于:使用控件创建函数创建指定控件,并使用内存分配函数为创建的指定控件分配内存;所述控件坐标值设置子模块用于:使用坐标值初始化函数为创建的指定控件设置坐标值。

在上述技术方案的基础上,若指定控件为复合控件,所述控件创建模块还包括子控件添加子模块、子控件坐标值设置子模块;所述子控件添加子模块用于:使用对象初始化函数在创建的指定控件上添加子控件;所述子控件坐标值设置子模块用于:使用坐标值初始化函数为添加的子控件设置坐标值。

在上述技术方案的基础上,所述控件动画添加模块包括动画坐标值设置子模块、重力动画创建子模块、重力动画添加子模块、重力行为创建子模块、重力行为添加子模块、碰撞行为创建子模块、贝塞尔曲线创建及添加子模块、碰撞行为添加子模块;

所述动画坐标值设置子模块用于:设置重力碰撞的动画效果的起点坐标值和终点坐标值;

所述重力动画创建子模块用于:使用重力动画创建函数创建重力动画,并使用内存分配函数为创建的重力动画分配内存;

所述重力动画添加子模块用于:使用重力动画添加函数将创建的重力动画添加到所述指定控件上,并将该重力动画的代理设置为当前视图;

所述重力行为创建子模块用于:使用重力行为创建函数创建重力行为,并使用内存分配函数为创建的重力行为分配内存;将该重力行为的重力大小设置为预设的重力值;

所述重力行为添加子模块用于:使用行为添加函数将创建的重力行为添加到创建的重力动画上;

所述碰撞行为创建子模块用于:使用碰撞行为创建函数创建碰撞行为,并使用内存分配函数为创建的碰撞行为分配内存;将碰撞行为的碰撞模式设置为任何对象都会发生碰撞;

所述贝塞尔曲线创建及添加子模块用于:使用贝塞尔曲线创建函数创建贝塞尔曲线;使用贝塞尔曲线添加函数将创建的贝塞尔曲线添加到创建的碰撞行为上;

所述碰撞行为添加子模块用于:使用行为添加函数将碰撞行为添加到创建的重力动画上。

本发明的有益效果在于:

(1)本发明中,在收到呈现某个指定控件的指令后,会判断应用程序的界面中是否已存在该指定控件,若不存在,则先在应用程序的界面内创建指定控件并进行初始化设置,再对指定控件添加重力碰撞的动画效果,若存在,则直接对指定控件添加重力碰撞的动画效果;添加动画效果后,执行添加了重力碰撞的动画效果的指定控件,使指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上。通过上述操作,可让需要呈现的指定控件先从显示的初始位置按照重力下落的效果出现,然后再实现一个贝塞尔曲线路径的碰撞行为。

以重力下落的效果出现,可令控件的出现有一个过程不会突然,避免了现有技术中因控件在很短的时间内呈现在用户面前,会给用户一种很突兀的感觉;重力下落效果之后,会实现一个贝塞尔曲线路径的碰撞行为,该效果能很好的引起用户的注意,呈现效果理想。总之,与现有技术的控件呈现相比,本发明能给用户较好的用户体验,满足了用户对控件呈现效果的高要求。

(2)本发明中,在创建指定控件之前,会对当前应用程序的界面中是否已存在指定控件进行判断,避免了对相同控件的重复创建,使得整个处理过程效率更高。

(3)本发明中,针对复合控件的情况,增设了相应的适用方法和适用模块,使得本发明的适用性更高、使用范围广。

附图说明

图1为本发明实施例中控件呈现方法的流程图;

图2为本发明实施例中控件呈现设备的结构示意图;

图3为本发明实施例中控件呈现系统的结构框图;

图4为本发明实施例中控件创建模块的具体结构框图;

图5为本发明实施例中控件创建模块的另一种结构框图;

图6为本发明实施例中控件动画添加模块的具体结构框图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

参见图1所示,本发明实施例提供一种控件呈现方法,该方法包括以下步骤:

步骤s1、控件的判断:当收到在应用程序的界面呈现某个指定控件的指令时,判断应用程序的界面中是否已存在该指定控件,若不存在,转入步骤s2,若存在,转入步骤s3。通常来说,呈现某个指定控件的指令一般是socket(套接字)的消息或者是调用某个接口收到的消息指令。

在一种实施方式中,步骤s1中判断应用程序的界面中是否已存在该指定控件的具体流程为:判断应用程序的界面中是否存在该指定控件的父视图superview,若存在该指定控件的父视图superview,则判定应用程序的界面中已存在该指定控件;若不存在该指定控件的父视图superview,则判定应用程序的界面中不存在该指定控件。

步骤s2、控件的创建:在应用程序的界面内创建指定控件并进行初始化设置。

在一种实施方式中,步骤s2具体包括以下流程:

步骤s201、使用控件创建函数创建指定控件,并使用内存分配函数为创建的指定控件分配内存。

可以理解的是,步骤s201中的控件创建函数是根据所要创建的指定控件来选择的,不同的指定控件所选择使用的控件创建函数可不同,例如,在ios系统中可使用标签控件创建类uilabel,来创建一个标签控件。同样,以ios系统为例,步骤s201中可使用ios系统自带的内存分配函数alloc,来为创建的指定控件分配内存。

步骤s202、使用坐标值初始化函数为创建的指定控件设置坐标值。还是以ios系统为例,步骤s202中可使用ios系统自带的坐标值初始化函数initwithframe为创建的指定控件设置坐标值。

进一步的,在实际应用中,由于指定控件可能会为复合控件。所谓复合控件,是指控件上添加有必要的展示元素,这些展示元素也叫子控件,因此这种添加有子控件的控件可被称为复合控件。其中,展示元素(子控件)可以是图片uiimage类型的,文本uilable类型的,按钮uibutton类型的,也可以是输入框uitexfield类型的。若指定控件为复合控件,则步骤s203之后还包括以下操作:使用对象初始化函数在创建的指定控件上添加子控件;使用坐标值初始化函数为添加的子控件设置坐标值。同样以ios系统为例,上述操作中可使用ios系统的init函数实现在创建的指定控件上添加子控件。另外,可以理解的是,由于添加的子控件是依附在创建的指定控件内部的,所以给指定控件添加的动画效果的时候,子控件也会呈现出同样的动画效果。

步骤s3、控件动画的插入:为指定控件添加重力碰撞的动画效果。

在一种实施方式中,步骤s3具体包括以下流程:

步骤s301、设置重力碰撞的动画效果的起点坐标值starrect和终点坐标值endrect。

步骤s302、使用重力动画创建函数创建一个重力动画,并使用内存分配函数为创建的重力动画分配内存。

还是以ios系统为例,步骤s302中,使用重力动画创建函数创建重力动画时,可使用ios系统提供的创建重力动画的类函数uidynamicanimator来实现;使用内存分配函数为创建的重力动画分配内存时,可使用ios系统提供的内存分配函数alloc来实现。

步骤s303、使用重力动画添加函数将创建的重力动画添加到指定控件上,并将该重力动画的代理设置为当前视图。

还是以ios系统为例,步骤s303中,使用重力动画添加函数将重力动画添加到指定控件上时,可使用ios系统提供的initwithreferenceview函数来实现。

步骤s304、使用重力行为创建函数创建一个重力行为,并使用内存分配函数为创建的重力行为分配内存;将该重力行为的重力大小设置为预设的重力值。可以理解的是,该预设的重力大小值可由开发人员根据具体的需要进行自行设置和调整,人为可控性高、灵活度大。

还是以ios系统为例,步骤s304中,使用重力行为创建函数创建重力行为时,可使用ios系统提供的创建重力行为的类函数uigravitybehavior来实现;使用内存分配函数为创建的重力行为分配内存时,可使用ios系统提供的内存分配函数alloc来实现。

步骤s305、使用行为添加函数将创建的重力行为添加到创建的重力动画上。

还是以ios系统为例,步骤s305中,使用行为添加函数将创建的重力行为添加到创建的重力动画上时,可使用ios系统的addbehavior函数来实现。

步骤s306、使用碰撞行为创建函数创建一个碰撞行为,并使用内存分配函数为创建的碰撞行为分配内存;将碰撞行为的碰撞模式设置为任何对象都会发生碰撞。

还是以ios系统为例,步骤s306中,使用碰撞行为创建函数创建一个碰撞行为时,可使用ios系统提供的创建碰撞行为的类函数uicollisionbehavior来实现。另外,将碰撞行为的碰撞模式设置为任何对象都会发生碰撞时,可通过将碰撞行为的碰撞模式设置为uicollisionbehaviormodeeverything类型即可。

步骤s307、使用贝塞尔曲线创建函数创建一个贝塞尔曲线;使用贝塞尔曲线添加函数将创建的贝塞尔曲线添加到创建的碰撞行为上。

还是以ios系统为例,步骤s307中,使用贝塞尔曲线创建函数创建一个贝塞尔曲线时,可使用ios系统提供的贝塞尔曲线创建函数bezierpathwithroundedrect来实现;使用贝塞尔曲线添加函数将贝塞尔曲线添加到碰撞行为上时,可使用ios系统提供的贝塞尔曲线添加函数addboundarywithidentifier来实现。

步骤s308、使用行为添加函数将当前碰撞行为(即,添加有贝塞尔曲线的碰撞行为)添加到创建的重力动画上。

通过上述步骤的操作,就可以成功完成为控件添加先重力下落再实现贝塞尔曲线的碰撞行为的动画效果。可以理解的是,在实际执行动画效果时,上述碰撞行为路径执行结束的时候会调用一个碰撞行为停止的方法,此时则需要调用之前步骤s301中设置的终点坐标值endrect。

步骤s4、控件的呈现:执行添加了重力碰撞的动画效果的指定控件,使指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上。

可以理解的是,指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上时,指定控件会先在显示的初始位置按照重力下落的效果出现,然后再实现一个碰撞行为的效果,该碰撞行为的执行路径为贝塞尔曲线路径。

对应上述的控件呈现方法,本发明实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现上述各实施例中的控件呈现方法的步骤。需要说明的是,所述存储介质包括u盘、移动硬盘、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

另外,参见图2所示,对应上述的控件呈现方法,本发明实施例还提供一种控件呈现设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时可实现上述各实施例中的控件呈现方法的步骤。

参见图3所示,本发明实施例还提供一种控件呈现系统,该系统包括控件判断模块、控件创建模块、控件动画添加模块、控件呈现模块。

其中,控件判断模块用于:当收到在应用程序的界面呈现某个指定控件的指令时,判断应用程序的界面中是否已存在该指定控件,若不存在,向控件创建模块发送控件创建信号,若存在,向控件动画添加模块发送控件动画添加信号。具体来说,所述控件判断模块判断应用程序的界面中是否已存在该指定控件的具体流程为:判断应用程序的界面中是否存在该指定控件的父视图superview,若存在该指定控件的父视图superview,则判定应用程序的界面中已存在该指定控件;若不存在该指定控件的父视图superview,则判定应用程序的界面中不存在该指定控件。

控件创建模块用于:收到控件创建信号后,在应用程序的界面内创建指定控件并进行初始化设置;向控件动画添加模块发送控件动画添加信号。

控件动画添加模块用于:收到控件动画添加信号后,为指定控件添加重力碰撞的动画效果;向控件呈现模块发送控件呈现信号。

控件呈现模块用于:收到控件呈现信号后,执行添加了重力碰撞的动画效果的指定控件,使指定控件按照重力碰撞的动画效果呈现在当前应用程序的界面上。

进一步地,参见图4所示,控件创建模块包括控件创建及内存分配子模块、控件坐标值设置子模块。其中,控件创建及内存分配子模块用于:使用控件创建函数创建指定控件,并使用内存分配函数为创建的指定控件分配内存;控件坐标值设置子模块用于:使用坐标值初始化函数为创建的指定控件设置坐标值。

更进一步地,参见图5所示,若指定控件为复合控件,所述控件创建模块还包括子控件添加子模块、子控件坐标值设置子模块。其中,子控件添加子模块用于:使用对象初始化函数在创建的指定控件上添加子控件;子控件坐标值设置子模块用于:使用坐标值初始化函数为添加的子控件设置坐标值。

再进一步地,参见图6所示,控件动画添加模块包括动画坐标值设置子模块、重力动画创建子模块、重力动画添加子模块、重力行为创建子模块、重力行为添加子模块、碰撞行为创建子模块、贝塞尔曲线创建及添加子模块、碰撞行为添加子模块。

其中,动画坐标值设置子模块用于:设置重力碰撞的动画效果的起点坐标值和终点坐标值;

重力动画创建子模块用于:使用重力动画创建函数创建一个重力动画,并使用内存分配函数为创建的重力动画分配内存;

重力动画添加子模块用于:使用重力动画添加函数将创建的重力动画添加到指定控件上,并将该重力动画的代理设置为当前视图;

重力行为创建子模块用于:使用重力行为创建函数创建一个重力行为,并使用内存分配函数为创建的重力行为分配内存;将该重力行为的重力大小设置为预设的重力值;

重力行为添加子模块用于:使用行为添加函数将创建的重力行为添加到创建的重力动画上;

碰撞行为创建子模块用于:使用碰撞行为创建函数创建一个碰撞行为,并使用内存分配函数为创建的碰撞行为分配内存;将碰撞行为的碰撞模式设置为任何对象都会发生碰撞;

贝塞尔曲线创建及添加子模块用于:使用贝塞尔曲线创建函数创建一个贝塞尔曲线;使用贝塞尔曲线添加函数将创建的贝塞尔曲线添加到创建的碰撞行为上;

碰撞行为添加子模块用于:使用行为添加函数将碰撞行为添加到创建的重力动画上。

需要说明的是:上述实施例提供的系统在实现控件的呈现时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1