一种界面关闭方法、系统及相关装置与流程

文档序号:17318240发布日期:2019-04-05 21:23阅读:201来源:国知局
一种界面关闭方法、系统及相关装置与流程

本申请涉及android容器布局的自定义技术领域,特别涉及一种界面关闭方法、系统、布局容器及计算机可读存储介质。



背景技术:

android针对布局,官方sdk提供了布局容器类,相对布局容器(relativelayout)的特点是容器内的子控件可相互重叠,按照先进后出的原则(重叠情况下,先放置的在界面的最低层,后放置的再上层),相对布局中的控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的位置,这种相对的设置大大增加可布局的适配能力和灵活性。

目前,对于android系统的设备来说,实现界面的关闭需要检测到用户按返回键的触摸信息。这种界面关闭方式,界面无法跟随手势进行移动缩放,导致用户的交互体验感较差,产品竞争力较弱。



技术实现要素:

本申请的目的是提供一种界面关闭方法、系统、布局容器及计算机可读存储介质,能够提高用户的交互体验感,进而提高产品的竞争力。

为解决上述技术问题,本申请提供一种界面关闭方法,包括:

当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离;

当利用所述滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据;

利用更新后的所述子控件的所述位置宽高数据获取所述界面的缩放比例;

判断所述缩放比例是否大于预设的缩放比例阈值;

若是,则关闭所述界面。

优选地,所述当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离之前,还包括:

获取进场动画的位置宽高数据和所述子控件的所述位置宽高数据;

利用所述进场动画的所述位置宽高数据和所述子控件的所述位置宽高数据,实时执行界面的绘制操作。

优选地,所述利用所述进场动画的所述位置宽高数据和所述子控件的所述位置宽高数据,实时执行界面的绘制操作,包括:

根据所述进场动画的所述位置宽高数据和所述子控件的所述位置宽高数据,利用属性动画api计算出每帧界面绘制所需的特征数据;其中,所述特征数据包括位置数据、缩放数据及渐变数据;

在将所述特征数据初始化至变化数据后,根据所述变化数据实时执行所述界面的所述绘制操作。

优选地,所述当利用所述滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据,包括:

利用所述滑动距离计算出手势特征数据;其中,所述手势特征数据包括移动偏移量数据、缩放比例数据及背景渐变系数数据;

根据所述手势特征数据,执行所述界面的所述绘制操作;

当所述界面的所述绘制操作完成时,更新所述布局容器内所述子控件的所述位置宽高数据。

本申请还提供一种界面关闭系统,包括:

滑动距离获取模块,用于当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离;

位置宽高数据更新模块,用于当利用所述滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据;

缩放比例获取模块,用于利用更新后的所述子控件的所述位置宽高数据获取所述界面的缩放比例;

判断模块,用于判断所述缩放比例是否大于预设的缩放比例阈值;

界面关闭模块,用于若所述缩放比例大于所述缩放比例阈值,则关闭所述界面。

优选地,该界面关闭系统还包括:

位置宽高数据获取模块,用于获取进场动画的位置宽高数据和所述子控件的所述位置宽高数据;

界面绘制操作执行模块,用于利用所述进场动画的所述位置宽高数据和所述子控件的所述位置宽高数据,实时执行界面的绘制操作。

优选地,所述界面绘制操作执行模块,包括:

特征数据计算单元,用于根据所述进场动画的所述位置宽高数据和所述子控件的所述位置宽高数据,利用属性动画api计算出每帧界面绘制所需的特征数据;其中,所述特征数据包括位置数据、缩放数据及渐变数据;

界面绘制操作执行单元,用于在将所述特征数据初始化至变化数据后,根据所述变化数据实时执行所述界面的所述绘制操作。

优选地,所述位置宽高数据更新模块,包括:

手势特征数据计算单元,用于利用所述滑动距离计算出手势特征数据;其中,所述手势特征数据包括移动偏移量数据、缩放比例数据及背景渐变系数数据;

界面绘制单元,用于根据所述手势特征数据,执行所述界面的所述绘制操作;

位置宽高数据更新单元,用于当所述界面的所述绘制操作完成时,更新所述布局容器内所述子控件的所述位置宽高数据。

本申请还提供一种布局容器,包括:

存储器和处理器;其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述所述的界面关闭方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的界面关闭方法的步骤。

本申请所提供的一种界面关闭方法,包括:当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离;当利用所述滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据;利用更新后的所述子控件的所述位置宽高数据获取所述界面的缩放比例;判断所述缩放比例是否大于预设的缩放比例阈值;若是,则关闭所述界面。

该方法先是当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离,然后当利用所述滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据,再利用更新后的所述子控件的所述位置宽高数据获取所述界面的缩放比例,最后判断所述缩放比例是否大于预设的缩放比例阈值,若所述缩放比例大于预设的缩放比例阈值,则关闭所述界面。可见,该方法在界面关闭的过程中可以实现界面跟随手势进行移动缩放,能够提高用户的交互体验感,进而提高产品的竞争力。本申请还提供一种界面关闭系统、布局容器及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种界面关闭方法的流程图;

图2为本申请实施例所提供的另一种界面关闭方法的流程图;

图3为本申请实施例所提供的一种进场动画的流程图;

图4为本申请实施例所提供的一种界面关闭系统的结构框图。

具体实施方式

本申请的核心是提供一种界面关闭方法,能够提高用户的交互体验感,进而提高产品的竞争力。本申请的另一核心是提供一种界面关闭系统、布局容器及计算机可读存储介质。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,对于android系统的设备来说,实现界面的关闭需要检测到用户按返回键的触摸信息。这种界面关闭方式,界面无法跟随手势进行移动缩放,导致用户的交互体验感较差,产品竞争力较弱。本申请实施例所提供一种界面关闭方法可以在界面关闭的过程中实现界面跟随手势进行移动缩放,能够提高用户的交互体验感,进而提高产品的竞争力。具体请参考图1,图1为本申请实施例所提供的一种界面关闭方法的流程图,该界面关闭方法具体包括:

s101、当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离;

android系统布局容器类中的相对布局容器(relativelayout),可以根据相邻控件设置控件的位置(上下左右位置),较为复杂的界面使用相对布局只需要较少的层级结构就能实现,防止多层嵌套消耗系统性能,提升了布局的适配灵活度。但是,传统的相对布局容器未定义手势拖拽操作,即界面无法跟随手势进行移动缩放,若针对每个控件适配手势拖拽操作,处理逻辑会很繁琐。故本申请实施例在传统的相对布局容器的基础上,通过重写内部方法,自定义出一种新型的布局容器(dragrelativelayout),在布局容器内实现了在界面关闭过程中界面可以跟随手势进行移动缩放,内部子控件不需要进行二次开发,对于不同的子控件(图片控件,视频控件等)只要使用了dragrelativelayout作为容器,只需要简单开发就可以实现以上功能,不仅能够提高用户的交互体验感,进而提高产品的竞争力,还能针对开发者提升开发效率,降低代码重复度和维护成本。

故本申请的执行主体为新型的布局容器(dragrelativelayout),该布局容器当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离。对于滑动距离的长度,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。进一步地,本申请实施例是实时获取滑动距离,故相邻两次获取滑动距离之间存在着时间间隔,在此对时间间隔的时长不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。例如,时间间隔可以为0秒,即不间断地获取滑动距离;时间间隔还可以为0.01秒,即每隔0.01秒获取一次滑动距离。

在此,对于当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离的过程,不做具体限定,只要结果是可以实时获取滑动距离即可。上述过程通常可以为:dragrelativelayout布局容器通过拦截屏幕触摸事件,捕捉用户在android系统设备屏幕上的触摸点位坐标,利用捕捉到的触摸点位坐标判断用户的操作行为;当判断出用户的操作行为是向下滑动操作时,dragrelativelayout布局容器进入拖拽移动状态,不断的获取用户在屏幕上触摸点位坐标,然后利用获取的触摸点位坐标计算出滑动距离。进一步地,具体的过程可以为:通过dragrelativelayout布局容器中的重写系统触摸事件分发机制(dispatchtouchevent)拦截屏幕触摸事件,当用户手指触碰到屏幕会触发下按事件(action_down),本申请实施例在下按事件中记录手指触摸的第一个位置的xy坐标,并设置当前界面标记状态为未移动状态(代码中标记ismoved=false),用于标记当前视图是否开始进入拖拽状态;当用户手指开始滑动会触摸滑动事件(action_move),本申请实施例在滑动事件中利用上述下按事件中记录的第一个xy坐标,计算出当前滑动的距离(滑动中xy坐标减去第一次记录的xy坐标),本申请实施例设定拖拽是手指下滑一定距离触发的,若用户左右滑动或者向上滑动都交由系统去处理(x轴移动距离>y轴移动距离判为左右滑动;y为负值为向上滑动,y为正值为向下滑动);若满足预设条件,dragrelativelayout布局容器进入拖拽移动状态,不断的获取用户在屏幕上触摸点位坐标,然后利用获取的触摸点位坐标计算出滑动距离。

s102、当利用滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据;

本申请实施例在实时获取滑动距离后,当利用滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据。对于步骤s102的过程,在此不作具体限定,通常包括:利用滑动距离计算出手势特征数据;其中,手势特征数据包括移动偏移量数据、缩放比例数据及背景渐变系数数据;根据手势特征数据,执行界面的绘制操作;当界面的绘制操作完成时,更新布局容器内子控件的位置宽高数据。其中,执行界面的绘制操作通常是利用view相关api完成当前界面的移动、缩放及背景渐变的绘制操作,上述子控件的位置宽高数据包括子控件的位置数据和宽高数据。

界面的移动和缩放主要通过调用系统viewapi的settranslationx方法进行视图的左右移动,settranslationy方法进行视图的上下移动,setscalexy方法进行缩放、背景的变化,是根据整个视图移动的距离动态设置当前界面的透明度settranslationx(getx()+offsetx),settranslationy(gety()+offsety)这两个方法,根据手指滑动距离和当前视图xy位置获取移动后的位置做位移操作,根据math.abs(gety()/mexitrect.height)计算移动后y轴位置与移动前y轴位置的数据获取所需的缩放比例,进行setscalexy(scalexy)缩放操作,根据y轴移动距离通过(255*(1-math.abs(gety()/mexitrect.height)))获取需要设置的透明度数据,并设置给页面。

本申请实施例利用滑动距离完成界面的绘制操作时,即说明用户的向下滑动操作已经结束,在此对于更新布局容器内子控件的位置宽高数据的过程不作具体限定,该过程通常包括:当布局容器通过拦截屏幕触摸的抬起或者取消事件,判断出用户的向下滑动操作已经结束时,获取当前界面的位置数据和宽高数据更新至子控件的位置宽高数据。

s103、利用更新后的子控件的位置宽高数据获取界面的缩放比例;

本申请实施例在更新布局容器内子控件的位置宽高数据后,利用更新后的子控件的位置宽高数据获取界面的缩放比例。在此对缩放比例的大小不作具体限定,主要由用户的滑动距离确定其大小。本申请实施例界面缩放比例的获取方式,在此也不做具体限定,有上文可知,可以根据math.abs(gety()/mexitrect.height)计算移动后y轴位置与移动前y轴位置的数据获取缩放比例。

s104、判断缩放比例是否大于预设的缩放比例阈值;

本申请实施例在获取界面的缩放比例后,判断缩放比例是否大于预设的缩放比例阈值。对于预设的缩放比例阈值的大小,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如预设的缩放比例阈值为0.5f。此步骤判断缩放比例是否大于预设的缩放比例阈值,故有两种情况:缩放比例大于预设的缩放比例阈值;缩放比例不大于预设的缩放比例阈值。

s105、若缩放比例大于预设的缩放比例阈值,则关闭界面。

本申请实施例在判断缩放比例是否大于预设的缩放比例阈值后,若缩放比例大于预设的缩放比例阈值,则关闭界面。进一步地,对于缩放比例不大于预设的缩放比例阈值这种情况的后续操作不作具体限定,通常会执行回弹操作。执行操作的具体过程包括:执行dragrelativelayout布局容器中预设的回到原来位置的方法(backoriginalposition方法)进入视图的回弹恢复流程,利用属性动画从当前数据到初始数据,同时做缩放、位移及透明度动画,根据变化值不断的位移和缩放实现回弹。具体请参考图2,图2为本申请实施例所提供的另一种界面关闭方法的流程图。由图可知,在判断缩放比例是否大于预设的缩放比例阈值后,若缩放比例大于预设的缩放比例阈值,则关闭界面;若缩放比例不大于预设的缩放比例阈值,则执行回弹操作。

本申请实施例先是当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离,然后当利用滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据,再利用更新后的子控件的位置宽高数据获取界面的缩放比例,最后判断缩放比例是否大于预设的缩放比例阈值,若缩放比例大于预设的缩放比例阈值,则关闭界面。可见,该方法可以实现界面跟随手势进行移动缩放,能够提高用户的交互体验感,进而提高产品的竞争力。

基于上述实施例,本实施例中在当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离之前,通常还包括:获取进场动画的位置宽高数据和子控件的位置宽高数据;利用进场动画的位置宽高数据和子控件的位置宽高数据,实时执行界面的绘制操作。由上文可知,子控件的位置宽高数据包括子控件的位置数据和宽高数据,相应地,进场动画的位置宽高数据包括进场动画的位置数据和宽高数据。

在此对获取进场动画的位置宽高数据的过程和获取子控件的位置宽高数据的过程均不做具体限定。通常获取进场动画的位置宽高数据的过程为:在进入页面之前,dragrelativelayout布局容器内通过调用预设方法获取缩略控件view,根据缩略控件view的rect属性得到进场动画所需的位置和宽高数据(代码中定义为menterrect)。通常获取子控件的位置宽高数据的过程为:当进入dragrelativelayout布局容器所在页面后,本申请实施例dragrelativelayout布局容器通过重写dispatchdraw方法对系统绘制流程进行拦截,从而可以在进行绘制前获取布局容器内子控件的位置数据和宽高数据,也即得到进场结束动画所需的数据。

对于利用进场动画的位置宽高数据和子控件的位置宽高数据,实时执行界面的绘制操作的过程,在此也不作具体限定,该过程通常包括:根据进场动画的位置宽高数据和子控件的位置宽高数据,利用属性动画api计算出每帧界面绘制所需的特征数据;其中,特征数据包括位置数据、缩放数据及渐变数据;在将特征数据初始化至变化数据(代码中使用mchangerect作为记录)后,根据变化数据实时执行界面的绘制操作。可参见图3,图3为本申请实施例所提供的一种进场动画的流程图。其中,利用官方提供的属性动画api完成计算工作,通过onanimationupdate回调获取属性动画执行过程中的每一帧数据,并且及时更新mchangerect为最新数据,每一帧变化都会去调用invalidate方法进入界面绘制流程,可以呈现多种动画效果,即位移过程中伴随着缩放和背景渐变的效果。

在通过调用invalidate方法进入界面绘制流程后,先判断变化数据是否存在,若不存在,则先将特征数据初始化至变化数据;若存在,则根据变化数据,利用画布相关api进行界面的绘制工作,等待动画执行完成,进场效果也就实现了。具体地,在绘制方法内根据变化数据更新当前界面的位置和缩放比例,主要是通过canvas的apitranslate(画布位移方法)、cliprect(设置绘制范围)方法设置绘制区域,通过matrix(矩阵)api的setscale(设置缩放)、posttranslate(设置内容的移动)实现缩放和移动的效果。

上文已经对进场动画进行了详细的阐述,进一步地,在界面关闭时可以实现出场动画的效果,即在界面关闭时执行上述进场动画的逆过程。具体地,当上述界面的缩放比例大于预设的缩放比例阈值时,采用dragrelativelayout布局容器中预设的更新最新位置变化数据的方法(changezoomform方法),将开始位置数据对象更新为当前最新的位置数据(手指拖动最后放开的位置),然后再执行上述进场动画的逆过程,最终关闭界面。

由上述实施例可知,本申请主要适用于图片浏览、视频浏览的布局外层框架,通过几处简单的调用就可快速实现图片进出场缩放,跟随手势拖拽移动关闭的效果,无需对内部子控件做任何的二次开发,提高了开发效率,降低了代码维护成本。

下面对本申请实施例提供的一种界面关闭系统、布局容器及计算机可读存储介质进行介绍,下文描述的界面关闭系统、布局容器及计算机可读存储介质与上文描述的界面关闭方法可相互对应参照。

请参考图4,图4为本申请实施例所提供的一种界面关闭系统的结构框图;该界面关闭系统包括:

滑动距离获取模块401,用于当判断出用户的操作行为是向下滑动操作时,实时获取滑动距离;

位置宽高数据更新模块402,用于当利用滑动距离完成界面的绘制操作时,更新布局容器内子控件的位置宽高数据;

缩放比例获取模块403,用于利用更新后的子控件的位置宽高数据获取界面的缩放比例;

判断模块404,用于判断缩放比例是否大于预设的缩放比例阈值;

界面关闭模块405,用于若缩放比例大于缩放比例阈值,则关闭界面。

基于上述实施例,本实施例中界面关闭系统,通常还包括:

位置宽高数据获取模块,用于获取进场动画的位置宽高数据和子控件的位置宽高数据;

界面绘制操作执行模块,用于利用进场动画的位置宽高数据和子控件的位置宽高数据,实时执行界面的绘制操作。

基于上述实施例,本实施例中界面绘制操作执行模块,通常包括:

特征数据计算单元,用于根据进场动画的位置宽高数据和子控件的位置宽高数据,利用属性动画api计算出每帧界面绘制所需的特征数据;其中,特征数据包括位置数据、缩放数据及渐变数据;

界面绘制操作执行单元,用于在将特征数据初始化至变化数据后,根据变化数据实时执行界面的绘制操作。

基于上述实施例,本实施例中位置宽高数据更新模块402,通常包括:

手势特征数据计算单元,用于利用滑动距离计算出手势特征数据;其中,手势特征数据包括移动偏移量数据、缩放比例数据及背景渐变系数数据;

界面绘制单元,用于根据手势特征数据,执行界面的绘制操作;

位置宽高数据更新单元,用于当界面的绘制操作完成时,更新布局容器内子控件的位置宽高数据。

本申请还提供一种布局容器,包括:存储器和处理器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序时实现上述任意实施例的界面关闭方法的步骤。

本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的界面关闭方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种界面关闭方法、系统、布局容器及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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