防止界面抖动的方法、装置、设备及计算机可读存储介质与流程

文档序号:14174928阅读:269来源:国知局
防止界面抖动的方法、装置、设备及计算机可读存储介质与流程

本发明涉及信息处理技术领域,尤其涉及一种防止界面抖动的方法、装置、设备及计算机可读存储介质。



背景技术:

用户在操作终端上的控件时经常会遇到终端界面抖动的问题,如显示网页内容的webview控件,该控件的某些区域可以同时触发上下滑动和左右滑动的效果。如webview控件本身在显示页面时具有上下滑动的效果,webview控件当做是一个容器时,它内部还有其他的一些标签,如显示图片的标签,该显示图片的标签具有左右滑动的效果。如用javascript代码生成的多张图片轮播,该轮播的图片具有左右滑动的效果。用户的动作是随机的,如果在较短的时间内,用户的手指上下左右滑动,终端界面就会出现抖动的问题。如用户的手指放在轮播的图片上,斜着滑动,图片标签触发了其对应的滑动事件,该滑动事件可以实现左右滑动的效果,而webview控件的本身也触发了其对应的滑动事件,该滑动事件可以实现上下滑动的效果,那么就会检测到既有左右滑动又有上下滑动,终端就会出现抖动,影响了用户的体验。



技术实现要素:

本发明实施例提供了一种防止界面抖动的方法、装置、设备及计算机可读存储介质,可以在控件同时存在多个滑动事件时,防止多个滑动事件引起的终端界面的抖动。

第一方面,本发明实施例提供了一种防止界面抖动的方法,该方法包括:

若检测到控件上因滑动操作而触发多个不同方向上的滑动事件,获取所述滑动操作的滑动时间和滑动轨迹;

若所述滑动时间达到预设时间且所述滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向;

对与所述滑动方向相同的滑动事件加上互斥锁;

将加上互斥锁的滑动事件的滑动方向作为所述滑动操作的方向并上报给所述控件,以使所述控件响应当前滑动操作;

若所述滑动操作结束,解除所述互斥锁。

第二方面,本发明实施例提供了一种防止界面抖动的装置,该装置包括用于执行上述第一方面所述的防止界面抖动的方法的单元。

第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;

所述存储器用于存储实现防止界面抖动的计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的防止界面抖动的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,实现上述第一方面所述的防止界面抖动的方法。

本发明实施例通过若检测到控件上因滑动操作而触发的多个滑动事件时,获取所述滑动操作的滑动时间和滑动轨迹;若所述滑动时间达到预设时间且所述滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向;对与所述滑动方向相同的滑动事件加上互斥锁;控制所述控件响应已加上互斥锁的滑动事件;若所述滑动操作结束,解除所述互斥锁。本发明实施例通过计算在预设时间内的滑动方向,并为所述滑动方向相同的滑动事件加上互斥锁,使所述控件只响应加上互斥锁的滑动事件的滑动,如此避免了因滑动操作而触发的多个不同方向上滑动事件引起的终端界面的抖动。

附图说明

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

图1是本发明实施例提供的一种防止界面抖动的方法的流程示意图;

图2是本发明实施例提供的一种防止界面抖动的方法的子流程示意图;

图3是图2所示方法的子流程示意图;

图4是本发明实施例提供的一种防止界面抖动的方法的子流程示意图;

图5是本发明另一实施例提供的一种防止界面抖动的方法的子流程示意图;

图6是本发明实施例提供的一种防止界面抖动的装置的示意性框图;

图7是本发明实施例提供的计算单元的示意性框图;

图8是本发明实施例提供的平均方向计算单元的示意性框图;

图9是本发明实施例提供的加锁单元的示意性框图;

图10是本发明另一实施例提供的计算单元的示意性框图;

图11是本发明实施例提供的一种计算机设备的示意性框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

也应当理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

也应当理解,尽管术语第一、第二等可以在此用来描述各种元素,但这些元素不应该受限于这些术语。这些术语仅用来将这些元素彼此区分开。例如,在不脱离本发明范围的前提下,第一夹角可以被称为第二夹角,并且类似地,第二夹角可以被称为第一夹角。第一夹角和第二夹角均为夹角,但他们并非同一夹角。

具体实现中,本发明实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的便携式通信设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。

在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如网络接口、物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。

图1是本发明实施例提供的一种防止界面抖动的方法的流程示意图。该方法运行于安装有控件的终端中,该控件具有上下左右的滑动效果。如图1所示,该方法包括s101-s105。

s101,若检测到控件上因滑动操作而触发的多个滑动事件,获取该滑动操作的滑动时间和滑动轨迹。

如在显示网页内容的webview控件中,webview控件本身在显示页面时具有上下滑动的效果,webview控件当做是一个容器时,它内部还有其他的一些标签,如显示轮播图片的标签,该轮播的图片具有左右滑动的效果。如若用户的手指放在轮播的图片上,斜着滑动,图片标签触发了其对应的滑动事件,该滑动事件可以实现左右滑动的效果,而webview控件本身也触发了其对应的滑动事件,该滑动事件可以实现上下滑动的效果,那么就会同时检测到两个滑动事件:图片标签对应的滑动事件和webview控件本身对应的滑动事件。需要注意的是,这里的同时并不是终端上的cpu认为的真正意义上的同时。事实上,检测到控件上的两个滑动事件的时间是有先后的,但是这个先后的时间间隔非常非常短,cpu可以忽略。

若检测到控件上因滑动操作而触发的多个滑动事件,获取该滑动操作的滑动时间和滑动轨迹。如用户手指斜着滑动,那么获取该斜着滑动对应的滑动操作的滑动时间和滑动轨迹。其中,滑动时间是以检测到同时存在多个滑动事件时开始,到当前时间为止,对应的滑动操作持续的时间;滑动轨迹对应的是滑动时间内滑动的轨迹,其中,滑动轨迹包括滑动触点。滑动触点指的是在滑动操作过程中,可以识别的与终端接触的点,通常一个滑动轨迹包括多个滑动触点。本发明实施例中,滑动操作还可以包括有多个,如用户两只手同时滑动而引起的对应的滑动操作,用户两只手操作的区域属于控件中可以触发多个滑动事件的区域。若滑动操作有多个,如两个手指对应的滑动操作,那么获取对应的滑动时间,并分别获取对应的滑动时间内每个手指对应的滑动操作的滑动轨迹。

s102,若滑动时间达到预设时间且滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向。

其中,预设时间可以为200ms。若滑动时间达到预设时间且滑动操作未结束,如检测到用户的手指未离开控件所在的区域,根据当前已产生的滑动轨迹计算滑动方向;否则,不响应该滑动操作。即滑动时间达到预设时间时滑动操作已结束,如滑动时间达到预设时间检测到用户的手指就离开控件所在的区域,以及滑动时间未达到预设时间而滑动操作已结束,如滑动的时间未达到预设时间检测到用户的手指就离开控件所在的区域,不响应该滑动操作。

具体地,如图2所示,根据当前已产生的滑动轨迹计算滑动方向,即步骤s102包括s201-s202。

s201,根据当前已产生的滑动轨迹计算已进行的滑动操作的平均方向。其中,已产生的滑动轨迹可理解为达到预设时间时,滑动操作产生的滑动轨迹。假设有以终端屏幕向右滑动为x轴正方向,屏幕向上滑动为y轴正方向,屏幕左下角为坐标原点的坐标轴,其中,预设轴为x轴,预设轴的方向为x轴正方向。

如图3所示,根据当前已产生的滑动轨迹计算已进行的滑动操作的平均方向,即步骤s201包括s301-s304。

s301,根据当前已产生的滑动轨迹采集多个滑动触点。可选地,可以根据当前已产生的滑动轨迹按照等时间间隔的方式采集多个滑动触点,也可以根据当前已产生的滑动轨迹按照等距离间隔的方式采集多个滑动触点。等距离间隔可以是在预设轴x轴方向上的相等距离间隔,也可以是在y轴方向上的相等距离间隔。其中,多个滑动触点可以是50个滑动触点。

s302,确定相邻两个滑动触点的连线与预设轴的夹角。其中,在本实施例中,预设轴为x轴,预设轴的方向为x轴正方向。相邻两个滑动触点指的是同一个滑动操作产生的滑动轨迹上的相邻滑动触点。在其他实施例中,预设轴可以为x轴,方向为x轴负方向;预设轴也可以是y轴,方向为y轴正方向或者y轴负方向。对于所有采集的滑动触点,将相邻两个滑动触点连线,并计算该连线与预设轴的夹角,具体地,获取两个滑动触点的x、y坐标,根据x、y坐标计算与预设轴的夹角,如计算出来的夹角为48度,具体的度数可以直接四舍五入到整数。若采集有50个滑动触点,那么就可以计算出49个夹角。

s303,计算已确定的所有夹角的平均值。即将所有的夹角的值相加,除以夹角的个数,如3个夹角的值分别为50度、60度、42度,那么该3个夹角的平均值为(50+60+42)/3=50度。

s304,根据所有夹角的平均值和预设轴的方向确定已进行的滑动操作的平均方向。具体地,若所有夹角的平均值范围在315度至45度之间,已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相同;若所有夹角的平均值范围在135度至225度之间,已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相反;否则,滑动方向在预设轴的垂直方向上。其中,若所有夹角的平均值范围在45度至135度之间,已进行的滑动操作的平均方向与y轴正方向相同;若所有夹角的平均值范围在225度至315度,已进行的滑动操作的平均方向与y轴正方向相反。

s202,根据该平均方向确定已进行的滑动操作的滑动方向。若已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相同,确定已进行的滑动操作的滑动方向为向右滑动;若已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相反,即已进行的滑动操作的滑动方向为向左滑动;若已进行的滑动操作的平均方向与y轴正方向相同,即已进行的滑动操作的滑动方向为向上滑动;若已进行的滑动操作的平均方向与y轴正方向相反,即已进行的滑动操作的滑动方向为向下滑动。

若检测到的滑动操作只有一个,根据该一个滑动操作当前已产生的滑动轨迹计算已进行的滑动操作的平均方向,根据该平均方向确定在预设时间内已进行的滑动操作的滑动方向。若检测到的滑动操作对应有多个,如两个滑动操作,分别采集两个滑动操作当前已产生的滑动轨迹上的多个滑动触点,再确定每一个滑动轨迹上相邻两个滑动触点的连线与预设轴的夹角,以及计算每一个滑动轨迹上已确定的所有夹角的平均值,得到两个平均值,分别称为第一平均值和第二平均值。如第一平均值为42度,第二平均值为60度。将第一平均值和第二平均值进行平均,如平均后的角度为(42度+60度)/2=51度,再根据平均后的角度以及预设轴的方向确定已进行的滑动操作的平均方向。那么,确定已进行的滑动操作的平均方向为y轴正方向,根据该平均方向确定已进行的滑动操作的滑动方向为向上滑动。

s103,对与所述滑动方向相同的滑动事件加上互斥锁。

如若两个滑动事件的滑动方向分别是向右滑动、向上滑动,若根据当前已产生的滑动轨迹计算出的滑动方向为向上滑动,那么给向上滑动的滑动事件加上互斥锁。互斥锁也叫排它锁、独占锁等。若创建了互斥锁,控件同一时间只能响应一个滑动事件,如加上互斥锁的滑动事件一直会被响应,其他的滑动事件不被响应。

具体地,如图4所示,对与所述滑动方向相同的滑动事件加上互斥锁,即步骤s103包括s401-s403。

s401,判断是否创建了控件的互斥锁。

s402,若没有创建控件的互斥锁,创建控件的互斥锁。控件的互斥锁可以是已经存在的,可以理解为,在执行本步骤之前就已经创建好了控件的互斥锁。假若控件的互斥锁不存在,那么需要创建控件的互斥锁,可以理解为,创建控件响应滑动事件的互斥锁。

s403,对与所述滑动方向相同的滑动事件加上创建的互斥锁。可以理解地,与所述滑动方向相同的滑动事件会被一直响应。而在加上互斥锁之前的预设时间内,不响应滑动操作。

上述根据当前已产生的滑动轨迹计算滑动方向,以及对与所述滑动方向相同的滑动事件加上互斥锁,是在滑动时间达到预设时间且滑动操作未结束的条件下完成的。

s104,控制控件响应已加上互斥锁的滑动事件。若滑动操作未结束,控制控件只响应加上互斥锁的滑动事件。如若加上互斥锁的滑动事件的滑动方向在加上互斥锁之前向上滑动,加上互斥锁之后仍然向上滑动,那么对应将向上滑动的滑动方向上报给控件,以使控件响应该滑动事件的向上滑动。若加上互斥锁的滑动事件的滑动方向在加上互斥锁之前向上滑动,加上互斥锁之后的一段时间内向下滑动,那么对应将该时间内的向下滑动的滑动方向上报给控件,以使控件响应该滑动事件的向下滑动。如此,可以提高控件响应滑动事件的准确性。

s105,若检测到滑动操作结束,解除所述互斥锁。其中,解除可理解为释放或者销毁。若有多个滑动操作,如两个滑动操作,滑动操作结束,可理解为,两个滑动操作都已结束,或者其中一个滑动操作结束。其中一个滑动操作结束,视为滑动操作结束,可以理解为,若只有一个滑动操作了,控件只需响应该滑动操作的滑动事件即可,不存在多个滑动事件的情况,也就不存在抖动的情况了。

上述实施例通通过若检测到控件上因滑动操作而触发的多个滑动事件时,获取所述滑动操作的滑动时间和滑动轨迹;若所述滑动时间达到预设时间且所述滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向;对与所述滑动方向相同的滑动事件加上互斥锁;控制控件响应已加上互斥锁的滑动事件;若所述滑动操作结束,解除所述互斥锁。本发明实施例通过计算在预设时间内的滑动方向,并为所述滑动方向相同的滑动事件加上互斥锁,使所述控件只响应加上互斥锁的滑动事件的滑动,如此避免了因滑动操作而触发的多个滑动事件引起的终端界面的抖动。

在其他实施例中,对与所述滑动方向相同的滑动事件加上互斥锁后,将根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向,并控制控件响应该滑动方向。可以理解为,在对与所述滑动方向相同的滑动事件加上互斥锁后且滑动操作未结束的时间内,可以根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向。在滑动事件持有互斥锁的时间内,无论检测到滑动操作的时间有多久,就只根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向,向该控件上报该滑动方向,以使控件响应该加上互斥锁的滑动事件。如此,就无需在滑动事件加上互斥锁后,获取对应的滑动操作的滑动触点以及计算滑动操作的滑动方向,节省了计算量、存储量,同时也节省了终端的电量。

图5是本发明实施例提供的一种防止界面抖动的方法的子流程示意图。如图5所示,根据当前已产生的滑动轨迹计算滑动方向,包括s501-s502。

s501,根据当前已产生的滑动轨迹获取滑动轨迹开始时的第一触点和到达预设时间时的第二触点。具体地,获取第一触点和第二触点的坐标。若滑动操作只有一个,获取该滑动操作在滑动开始时的第一触点的坐标和到达预设时间时的第二触点的坐标。若滑动操作有多个,如两个滑动操作,分别获取两个滑动操作在滑动开始时的第一触点的坐标和到达预设时间时的第二触点的坐标。

s502,根据第一触点和第二触点确定滑动操作的滑动方向。其中,根据第一触点和第二触点确定滑动操作的滑动方向包括:根据第一触点和第二触点所在的直线的方向确定滑动操作的滑动方向。若滑动操作只有一个,将该滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,根据该连线与预设轴的夹角以及预设轴的方向确定滑动方向。具体地,若该夹角范围在315度至45度之间,滑动方向与预设轴的方向相同,即确定滑动操作的滑动方向为向右滑动;若该夹角范围在135度至225度之间,滑动方向与预设轴的方向相反,即确定滑动操作的滑动方向为向左滑动;若该夹角范围在45至135度之间,确定滑动操作的滑动方向与y轴正方向相同,即向上滑动;若该夹角范围在225度至315度之间,确定滑动操作的滑动方向与y轴正方向相反,即向下滑动。若有滑动操作多个,如两个滑动操作,先将其中一个滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,称为第一夹角,如该第一夹角为42度。再将另外一个滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,称为第二夹角,如该第二夹角为60度。最后将第一夹角和第二夹角进行平均后,根据平均后的夹角值与预设轴的方向确定滑动方向。如(42度+60度)/2=51度,那么确定滑动操作的滑动方向为y轴正方向,即向上滑动。

该实施例通过获取在滑动开始时的第一触点和到达预设时间时的第二触点,计算第一触点和第二触点所在的直线的方向与预设轴的夹角,根据该夹角确定滑动操作的滑动方向。

在其他实施例中,根据第一触点和第二触点确定滑动操作的滑动方向包括:根据第一触点和第二触点所在的直线的矢量来确定滑动操作的滑动方向。如若只有一个滑动操作,根据第一触点和第二触点所在的直线的矢量计算在坐标轴上的不同方向上的分量。如若在x轴上的分量大于在y轴上的分量,且矢量的方向向右,那么确定已进行的滑动操作的滑动方向为向右,若在y轴上的分量大于在x轴上的分量,且矢量的方向向上,那么确定已进行的滑动操作的滑动方向为向上等。

以上实施例中,若计算出的夹角正好为45度、135度、225度、315度,这些夹角对应时间点上滑动操作的滑动方向根据预设规则来决定。如根据前一时刻(或者前n个时刻)滑动操作的滑动方向决定或者随机选取一个方向决定。若根据前一时刻(或者前n个时刻)滑动操作的滑动方向决定,那么前一时刻(或者前n个时刻)滑动操作的滑动方向为向上滑动,那么这些夹角对应时间点上滑动操作的滑动方向向上。

图6是本发明实施例提供的一种防止界面抖动的装置的示意性框图。该装置60包括获取单元601、计算单元602、加锁单元603、控制单元604、解除锁单元605。

获取单元601用于若检测到控件上因滑动操作而触发的多个滑动事件,获取该滑动操作的滑动时间和滑动轨迹。

如在显示网页内容的webview控件中,webview控件本身在显示页面时具有上下滑动的效果,webview控件当做是一个容器时,它内部还有其他的一些标签,如显示轮播图片的标签,该轮播的图片具有左右滑动的效果。如若用户的手指放在轮播的图片上,斜着滑动,图片标签触发了其对应的滑动事件,该滑动事件可以实现左右滑动的效果,而webview控件本身也触发了其对应的滑动事件,该滑动事件可以实现上下滑动的效果,那么就会同时检测到两个滑动事件:图片标签对应的滑动事件和webview控件本身对应的滑动事件。需要注意的是,这里的同时并不是终端上的cpu认为的真正意义上的同时。事实上,检测到控件上的两个滑动事件的时间是有先后的,但是这个先后的时间间隔非常非常短,cpu可以忽略。

若检测到控件上因滑动操作而触发的多个滑动事件,获取该滑动操作的滑动时间和滑动轨迹。如用户手指斜着滑动,那么获取该斜着滑动对应的滑动操作的滑动时间和滑动轨迹。其中,滑动时间是以检测到同时存在多个滑动事件时开始,到当前时间为止,对应的滑动操作持续的时间;滑动轨迹对应的是滑动时间内滑动的轨迹,其中,滑动轨迹包括滑动触点。滑动触点指的是在滑动操作过程中,可以识别的与终端接触的点,通常一个滑动轨迹包括多个滑动触点。本发明实施例中,滑动操作还可以包括有多个,如用户两只手同时滑动而引起的对应的滑动操作,用户两只手操作的区域属于控件中可以触发多个滑动事件的区域。若滑动操作有多个,如两个手指对应的滑动操作,那么获取对应的滑动时间,并分别获取对应的滑动时间内每个手指对应的滑动操作的滑动轨迹。

计算单元602用于若滑动时间达到预设时间且滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向。

其中,预设时间可以为200ms。若滑动时间达到预设时间且滑动操作未结束,如检测到用户的手指未离开控件所在的区域,根据当前已产生的滑动轨迹计算滑动方向;否则,不响应该滑动操作。即滑动时间达到预设时间时滑动操作已结束,如滑动时间达到预设时间检测到用户的手指就离开控件所在的区域,以及滑动时间未达到预设时间而滑动操作已结束,如滑动的时间未达到预设时间检测到用户的手指就离开控件所在的区域,不响应该滑动操作。

具体地,如图7所示,计算单元602包括平均方向计算单元701、第一确定单元702。该计算单元602用于根据当前已产生的滑动轨迹计算滑动方向。

其中,平均方向计算单元701用于根据当前已产生的滑动轨迹计算已进行的滑动操作的平均方向。其中,已产生的滑动轨迹可理解为达到预设时间时,滑动操作产生的滑动轨迹。假设有以终端屏幕向右滑动为x轴正方向,屏幕向上滑动为y轴正方向,屏幕左下角为坐标原点的坐标轴,其中,预设轴为x轴,预设轴方向为x轴正方向。

如图8所示,平均方向计算单元701包括采集单元801、夹角确定单元802、平均夹角计算单元803、平均方向确定单元804。采集单元801用于根据当前已产生的滑动轨迹采集多个滑动触点。可选地,可以根据当前已产生的滑动轨迹按照等时间间隔的方式采集多个滑动触点,也可以根据当前已产生的滑动轨迹按照等距离间隔的方式采集多个滑动触点。等距离间隔可以是在预设轴x轴方向上的相等距离间隔,也可以是在y轴方向上的相等距离间隔。其中,多个滑动触点可以是50个滑动触点。夹角确定单元802用于确定相邻两个滑动触点的连线与预设轴的夹角。其中,在本实施例中,预设轴为x轴,方向为x轴正方向。相邻两个滑动触点指的是同一个滑动操作产生的滑动轨迹上的相邻滑动触点。在其他实施例中,预设轴可以为x轴,方向为x轴负方向;预设轴也可以是y轴,方向为y轴正方向或者y轴负方向。对于所有采集的滑动触点,将相邻两个滑动触点连线,并计算该连线与预设轴的夹角,具体地,获取两个滑动触点的x、y坐标,根据x、y坐标计算与预设轴的夹角,如计算出来的夹角为48度,具体的度数可以直接四舍五入到整数。若采集有50个滑动触点,那么就可以计算出49个夹角。平均夹角计算单元803用于计算已确定的所有夹角的平均值。即将所有的夹角的值相加,除以夹角的个数,如3个夹角的值分别为50度、60度、42度,那么该3个夹角的平均值为(50+60+42)/3=50度。平均方向确定单元804根据所有夹角的平均值和预设轴的方向确定已进行的滑动操作的平均方向。具体地,若所有夹角的平均值范围在315度至45度之间,已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相同;若所有夹角的平均值范围在135度至225度之间,已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相反;否则,滑动方向在预设轴的垂直方向上。其中,若所有夹角的平均值范围在45度至135度之间,已进行的滑动操作的平均方向与y轴正方向相同;若所有夹角的平均值范围在225度至315度,已进行的滑动操作的平均方向与y轴正方向相反。

第一确定单元702用于根据该平均方向确定已进行的滑动操作的滑动方向。若已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相同,确定已进行的滑动操作的滑动方向为向右滑动;若已进行的滑动操作的平均方向与预设轴的方向(x轴正方向)相反,即已进行的滑动操作的滑动方向为向左滑动;若已进行的滑动操作的平均方向与y轴正方向相同,即已进行的滑动操作的滑动方向为向上滑动;若已进行的滑动操作的平均方向与y轴正方向相反,即已进行的滑动操作的滑动方向为向下滑动。

若检测到的滑动操作只有一个,根据该一个滑动操作当前已产生的滑动轨迹计算已进行的滑动操作的平均方向,根据该平均方向确定在预设时间内已进行的滑动操作的滑动方向。若检测到的滑动操作对应有多个,如两个滑动操作,分别采集两个滑动操作当前已产生的滑动轨迹上的多个滑动触点,再确定每一个滑动轨迹上相邻两个滑动触点的连线与预设轴的夹角,以及计算每一个滑动轨迹上已确定的所有夹角的平均值,得到两个平均值,分别称为第一平均值和第二平均值。如第一平均值为42度,第二平均值为60度。将第一平均值和第二平均值进行平均,如平均后的角度为(42度+60度)/2=51度,再根据平均后的角度以及预设轴的方向确定已进行的滑动操作的平均方向。那么,确定已进行的滑动操作的平均方向为y轴正方向,根据该平均方向确定已进行的滑动操作的滑动方向为向上滑动。

加锁单元603用于对与所述滑动方向相同的滑动事件加上互斥锁。

如若两个滑动事件的滑动方向分别是向右滑动、向上滑动,若根据当前已产生的滑动轨迹计算出的滑动方向为向上滑动,那么给向上滑动的滑动事件加上互斥锁。互斥锁也叫排它锁、独占锁等。若创建了互斥锁,控件同一时间只能响应一个滑动事件,如加上互斥锁的滑动事件一直会被响应,其他的滑动事件不被响应。

具体地,如图9所示,对与所述滑动方向相同的滑动事件加上互斥锁,即加锁单元603包括互斥锁判断单元901、互斥锁创建单元902、互斥锁添加单元903。互斥锁判断单元901用于判断是否创建了控件的互斥锁。互斥锁创建单元902用于若没有创建控件的互斥锁,创建控件的互斥锁。控件的互斥锁可以是已经存在的,可以理解为,在执行本步骤之前就已经创建好了控件的互斥锁。假若控件的互斥锁不存在,那么创建控件的互斥锁,可以理解为,创建控件响应滑动事件的互斥锁。互斥锁添加单元903用于对与所述滑动方向相同的滑动事件加上获取的互斥锁。可以理解地,与所述滑动方向相同的滑动事件会被一直响应。而在加上互斥锁之前的预设时间内,不响应滑动操作。

控制单元604用于控制控件响应已加上互斥锁的滑动事件。若滑动操作未结束,控制控件只响应加上互斥锁的滑动事件。如若加上互斥锁的滑动事件的滑动方向在加上互斥锁之前向上滑动,加上互斥锁之后仍然向上滑动,那么对应将向上滑动的滑动方向上报给控件,以使控件响应该滑动事件的向上滑动。若加上互斥锁的滑动事件的滑动方向在加上互斥锁之前向上滑动,加上互斥锁之后的一段时间内向下滑动,那么对应将该时间内的向下滑动的滑动方向上报给控件,以使控件响应该滑动事件的向下滑动。如此,可以提高控件响应滑动事件的准确性。

解除锁单元605用于若检测到滑动操作结束,解除所述互斥锁。其中,解除可理解为释放或者销毁。若有多个滑动操作,如两个滑动操作,滑动操作结束,可理解为,两个滑动操作都已结束,或者其中一个滑动操作结束。其中一个滑动操作结束,视为滑动操作结束,可以理解为,若只有一个滑动操作了,控件只需响应该滑动操作的滑动事件即可,不存在多个滑动事件的情况,也就不存在抖动的情况了。

上述实施例通过计算在预设时间内的滑动方向,并为所述滑动方向相同的滑动事件加上互斥锁,使所述控件只响应加上互斥锁的滑动事件的滑动,如此避免了因滑动操作而触发的多个滑动事件引起的终端界面的抖动。

在其他实施例中,在加锁单元对与所述滑动方向相同的滑动事件加上互斥锁后,控制单元将根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向,并控制控件响应该滑动方向。可以理解为,在对与所述滑动方向相同的滑动事件加上互斥锁后且滑动操作未结束的时间内,可以根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向。在滑动事件持有互斥锁的时间内,无论检测到滑动操作的时间有多久,就只根据当前已产生的滑动轨迹计算出的滑动方向,作为加上互斥锁的滑动事件的滑动方向,向该控件上报该滑动方向,以使控件响应该加上互斥锁的滑动事件。如此,就无需在滑动事件加上互斥锁后,获取对应的滑动操作的滑动触点以及计算滑动操作的滑动方向,节省了计算量、存储量,同时也节省了终端的电量。

图10是本发明另一实施例提供的计算单元602的示意性框图。该计算单元602用于根据当前已产生的滑动轨迹计算滑动方向。该计算单元602包括触点获取单元101、第二确定单元102。触点获取单元101用于根据当前已产生的滑动轨迹获取滑动轨迹开始时的第一触点和到达预设时间时的第二触点。具体地,获取第一触点和第二触点的坐标。若滑动操作只有一个,获取该滑动操作在滑动开始时的第一触点的坐标和到达预设时间时的第二触点的坐标。若滑动操作有多个,如两个滑动操作,分别获取两个滑动操作在滑动开始时的第一触点的坐标和到达预设时间时的第二触点的坐标。第二确定单元102用于根据第一触点和第二触点确定滑动操作的滑动方向。其中,根据第一触点和第二触点确定滑动操作的滑动方向包括:根据第一触点和第二触点所在的直线的方向确定滑动操作的滑动方向。若滑动操作只有一个,将该滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,根据该连线与预设轴的夹角以及预设轴的方向确定滑动方向。具体地,若该夹角范围在315度至45度之间,滑动方向与预设轴的方向相同,即确定滑动操作的滑动方向为向右滑动;若该夹角范围在135度至225度之间,滑动方向与预设轴的方向相反,即确定滑动操作的滑动方向为向左滑动;若该夹角范围在45至135度之间,确定滑动操作的滑动方向与y轴正方向相同,即向上滑动;若该夹角范围在225度至315度之间,确定滑动操作的滑动方向与y轴正方向相反,即向下滑动。若有滑动操作多个,如两个滑动操作,先将其中一个滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,称为第一夹角,如该第一夹角为42度。再将另外一个滑动操作对应的第一触点与第二触点进行连线,并计算该连线与预设轴的夹角,称为第二夹角,如该第二夹角为60度。最后将第一夹角和第二夹角进行平均后,根据平均后的夹角值与预设轴的方向确定滑动方向。如(42度+60度)/2=51度,那么确定滑动操作的滑动方向为y轴正方向,即向上滑动。

该实施例通过获取在滑动开始时的第一触点和到达预设时间时的第二触点,计算第一触点和第二触点所在的直线的方向与预设轴的夹角,根据该夹角确定滑动操作的滑动方向。

在其他实施例中,根据第一触点和第二触点确定滑动操作的滑动方向包括:根据第一触点和第二触点所在的直线的矢量来确定滑动操作的滑动方向。如若只有一个滑动操作,根据第一触点和第二触点所在的直线的矢量计算在坐标轴上的不同方向上的分量。如若在x轴上的分量大于在y轴上的分量,且矢量的方向向右,那么确定已进行的滑动操作的滑动方向为向右,若在y轴上的分量大于在x轴上的分量,且矢量的方向向上,那么确定已进行的滑动操作的滑动方向为向上等。

以上实施例中,若计算出的夹角正好为45度、135度、225度、315度,这些夹角对应时间点上滑动操作的滑动方向根据预设规则来决定。如根据前一时刻(或者前n个时刻)滑动操作的滑动方向决定或者随机选取一个方向决定。若根据前一时刻(或者前n个时刻)滑动操作的滑动方向决定,那么前一时刻(或者前n个时刻)滑动操作的滑动方向为向上滑动,那么这些夹角对应时间点上滑动操作的滑动方向向上。

上述防止界面抖动的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图11所示的计算机设备上运行。

图11为本发明实施例提供的一种计算机设备的示意性框图。该计算机设备110可以是终端。该计算机设备110包括通过系统总线111连接的处理器112、存储器和网络接口113,其中,存储器可以包括非易失性存储介质114和内存储器115。

该非易失性存储介质114可存储操作系统1141和计算机程序1142。该计算机程序1142被执行时,可使得处理器112执行一种防止界面抖动的方法。

该处理器112用于提供计算和控制能力,支撑整个计算机设备110的运行。

该内存储器115为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器112执行时,可使得处理器112执行一种防止界面抖动的方法。

该网络接口113用于进行网络通信。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备110的限定,具体的计算机设备110可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器112用于运行存储在存储器中的计算机程序,以实现如下操作:

若检测到控件上因滑动操作而触发的多个滑动事件,获取所述滑动操作的滑动时间和滑动轨迹;若所述滑动时间达到预设时间且所述滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向;对与所述滑动方向相同的滑动事件加上互斥锁;控制所述控件响应已加上互斥锁的滑动事件;若检测到所述滑动操作结束,解除所述互斥锁。

在一实施例中,处理器112执行根据当前已产生的滑动轨迹计算滑动方向时,具体执行如下操作:

根据当前已产生的滑动轨迹计算已进行的滑动操作的平均方向;根据所述平均方向确定所述滑动方向。

在一实施例中,处理器112执行根据当前已产生的滑动轨迹确定已进行的滑动操作的平均方向时,具体执行如下操作:

根据当前已产生的滑动轨迹采集多个滑动触点;确定相邻两个滑动触点的连线与预设轴的夹角;计算已确定的所有夹角的平均值;根据所述平均值以及所述预设轴的方向确定已进行的滑动操作的平均方向。

在一实施例中,处理器112执行根据当前已产生的滑动轨迹采集多个滑动触点时,具体执行:

根据当前已产生的滑动轨迹按照等时间间隔的方式采集多个滑动触点,或者根据当前已产生的滑动轨迹按照等距离间隔的方式采集多个滑动触点。

在一实施例中,处理器112执行根据当前已产生的滑动轨迹计算滑动方向时,具体执行如下操作:

根据当前已产生的滑动轨迹获取滑动轨迹开始时的第一触点和到达预设时间时的第二触点;根据所述第一触点和所述第二触点确定所述滑动方向。

在一实施例中,处理器112执行对与所述滑动方向相同的滑动事件加上互斥锁时,具体执行如下操作:

判断是否创建了控件的互斥锁;若没有创建控件的互斥锁,创建控件的互斥锁;对与所述滑动方向相同的滑动事件加上获取的互斥锁。

应当理解,在本发明实施例中,处理器112可以是中央处理单元(centralprocessingunit,cpu),该处理器112还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域技术人员可以理解,图11中示出的计算机设备110结构并不构成对设备110的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,业务合并的设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图11所示实施例一致,在此不再赘述。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被执行时,实现以下步骤:

若检测到控件上因滑动操作而触发的多个滑动事件,获取所述滑动操作的滑动时间和滑动轨迹;若所述滑动时间达到预设时间且所述滑动操作未结束,根据当前已产生的滑动轨迹计算滑动方向;对与所述滑动方向相同的滑动事件加上互斥锁;控制所述控件响应已加上互斥锁的滑动事件;若检测到所述滑动操作结束,解除所述互斥锁。

在一实施例中,该程序指令被处理器执行根据当前已产生的滑动轨迹计算滑动方向时,具体实现:

根据当前已产生的滑动轨迹计算已进行的滑动操作的平均方向;根据所述平均方向确定所述滑动方向。

在一实施例中,该程序指令被处理器执行根据当前已产生的滑动轨迹确定已进行的滑动操作的平均方向时,具体实现:

根据当前已产生的滑动轨迹采集多个滑动触点;确定相邻两个滑动触点的连线与预设轴的夹角;计算已确定的所有夹角的平均值;根据所述平均值以及所述预设轴的方向确定已进行的滑动操作的平均方向。

在一实施例中,处理器112执行根据当前已产生的滑动轨迹采集多个滑动触点时,具体执行:

根据当前已产生的滑动轨迹按照等时间间隔的方式采集多个滑动触点,或者根据当前已产生的滑动轨迹按照等距离间隔的方式采集多个滑动触点。

在一实施例中,该程序指令被处理器执行根据当前已产生的滑动轨迹计算滑动方向时,具体实现:

根据当前已产生的滑动轨迹获取滑动轨迹开始时的第一触点和到达预设时间时的第二触点;根据所述第一触点和所述第二触点确定所述滑动方向。

在一实施例中,该计算机程序被处理器执行对与所述滑动方向相同的滑动事件加上互斥锁时,具体实现:

判断是否创建了控件的互斥锁;若没有创建控件的互斥锁,创建控件的互斥锁;对与所述滑动方向相同的滑动事件加上获取的互斥锁。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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