CN103677416B - 一种滑动过程中防止界面抖动的方法和装置 - Google Patents
一种滑动过程中防止界面抖动的方法和装置 Download PDFInfo
- Publication number
- CN103677416B CN103677416B CN201310682215.1A CN201310682215A CN103677416B CN 103677416 B CN103677416 B CN 103677416B CN 201310682215 A CN201310682215 A CN 201310682215A CN 103677416 B CN103677416 B CN 103677416B
- Authority
- CN
- China
- Prior art keywords
- coordinate
- difference
- distance
- event
- changing coordinates
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种滑动过程中防止界面抖动的方法和装置,涉及触摸技术研究领域,用于使滑动界面更加顺滑,避免出现卡顿或抖动的问题。该方法包括:获取触摸屏上当前事件中最新坐标,定义为当前坐标;定义该当前事件之前第一个事件中的最新坐标为第一坐标,定义该当前事件之前第二个事件中的最新坐标为第二坐标;计算第二坐标与第一坐标之间的距离,定义为第一距离,计算第一坐标与当前坐标的距离,定义为第二距离;判断第二距离是否大于第一距离的2倍,如果否,则正常处理当前事件;如果是,则在第一坐标和当前坐标之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件。本发明可以使界面滑动更流畅,更好地提高用户体验。
Description
技术领域
本发明涉及移动设备触摸技术研究领域,特别涉及一种滑动过程中防止界面抖动的方法和装置。
背景技术
在android系统中,很多界面在滑动的过程中会有抖动或者卡顿的现象,比如在桌面,手指滑动过程中界面会跟着手指滚动,但是界面滚动的过程中会有轻微的抖动或者卡顿,其中的一个原因是因为接收到的坐标不均匀或者坐标本身有抖动现象。
公开号为CN101859219B的中国发明专利公开了一种触摸屏触点坐标去抖动的方法,该方法是判断当前触点坐标与其前一个触点坐标的距离是否小于或等于一阈值,借此判断当前的触点坐标是否发生抖动,如果发生抖动就将当前的触点坐标丢弃。但是这种方法存在两个问题:1、直接通过当前触点坐标与其前一个触点坐标的距离来判断是否发生抖动,判断方式比较单一,容易产生误判;2、如果判断发生抖动,就将当前的触点坐标丢弃,这种只适用于抖动较小的情况。
因此,研究一种能够在触摸设备滑动过程中避免出现不连贯问题的方法和装置具有重要应用价值。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供一种滑动过程中防止界面抖动的方法,该方法能够使滑动界面更加顺滑,提升用户体验。
本发明还提供了一种基于上述方法的滑动过程中防止界面抖动的装置。
本发明的目的通过以下的技术方案实现:一种滑动过程中防止界面抖动的方法,包括以下步骤:
(1)获取触摸屏上当前事件中最新坐标,定义为当前坐标;定义该当前事件之前第一个事件中的最新坐标为第一坐标,定义该当前事件之前第二个事件中的最新坐标为第二坐标;
(2)计算第二坐标与第一坐标之间的距离,定义为第一距离,计算第一坐标与当前坐标的距离,定义为第二距离;
(3)判断第二距离是否大于第一距离的2倍,如果是,进入步骤(4),否则正常处理当前事件;
(4)在第一坐标和当前坐标之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件。
作为一种优选的实施方式,所述步骤(4)中,缓冲点设置在第一坐标和当前坐标之间的中点上。
作为另一种优选方式,并结合实际使用情况,降低计算量,所述步骤(4)中,若当前事件包括若干个触摸点,则选择第一坐标和当前坐标正中间的一个触摸点作为缓冲点。
作为优选,设定一第一阈值,计算第二坐标与第一坐标的横坐标之差,计算第一坐标与当前坐标的横坐标之差,如果上述两个差值之差小于第一阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的纵坐标之差作为第一距离,将第一坐标与当前坐标的纵坐标之差作为第二距离。从而可以在结合实际的情况下,降低计算量。
作为优选,设定一第二阈值,计算第二坐标与第一坐标的纵坐标之差,计算第一坐标与当前坐标的纵坐标之差,如果上述两个差值之差小于第二阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的横坐标之差作为第一距离,将第一坐标与当前坐标的横坐标之差作为第二距离。
一种滑动过程中防止界面抖动的装置,包括:
获取和定义单元,用于获取触摸屏上当前事件中最新坐标,定义为当前坐标;定义该当前事件之前第一个事件中的最新坐标为第一坐标,定义该当前事件之前第二个事件中的最新坐标为第二坐标;
距离计算单元,用于计算第二坐标与第一坐标之间的距离,定义为第一距离,计算第一坐标与当前坐标的距离,定义为第二距离;
判断单元,用于判断第二距离是否大于第一距离的2倍,如果是,运行缓冲点设置单元,否则正常处理收到的事件;
缓冲点设置单元,用于在第一坐标和当前坐标之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件;
界面滑动模块,用于根据当前收到的事件坐标滑动界面。
在所述缓冲点设置单元,包括:一缓冲点坐标计算模块,用于求取第一坐标和当前坐标之间的中点上的坐标。
作为一种优选的实施方式,所述缓冲点坐标计算模块,用于在当前事件包括若干个触摸点时,计算第一坐标和当前坐标正中间的一个触摸点的坐标作为缓冲点。
作为优选,所述距离计算单元包括:
第一计算单元,用于根据第二坐标与第一坐标的横坐标之差、第一坐标与当前坐标的横坐标之差,得到两个差值之差;
第一判断单元,用于判断两个差值之差是否小于第一阈值;
第一判定模块,用于当两个差值之差小于第一阈值时,将第二坐标与第一坐标的纵坐标之差作为第一距离,将第一坐标与当前坐标的纵坐标之差作为第二距离。
作为优选,所述距离计算单元包括:
第二计算单元,用于根据第二坐标与第一坐标的纵坐标之差、第一坐标与当前坐标的纵坐标之差,得到两个差值之差;
第二判断单元,用于判断两个差值之差是否小于第二阈值;
第二判定模块,用于当两个差值之差小于第二阈值时,将第二坐标与第一坐标的横坐标之差作为第一距离,将第一坐标与当前坐标的横坐标之差作为第二距离。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明根据当前事件的坐标,并利用历史记录中前两次的事件的坐标来判断是否容易导致界面不流畅,如果判断会出现,就预先在后面一次滑动的过程中,在当前事件中最新坐标点和前一事件中的最新坐标点之间增加缓冲点,从而避免出现滚动时不很连贯,出现卡顿感或抖动的现象。相较于现有技术中将抖动点去掉,本方法既保留了用户准确地触摸位置,又能够更好地提升用户体验,有较大的实用价值。
2、本发明方法实现简单,既能够保证滑动流畅,还可以在实际应用中根据实际硬件设备条件调节计算量。
附图说明
图1是本发明方法的流程示意图。
图2是本发明实施例1中的说明例图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
在基于Android平台的移动设备上进行触摸屏滑动过程中,每一次触摸系统应用收到的都是一个MotionEvent.java对象,该对象里面可能包含多个点的坐标,而一般情况下应用只会处理最新的一个点的坐标,如果两次触摸事件中,最新坐标之间的差距太大,就会导致界面在滑动的过程中出现抖动或者卡顿的现象,为了克服这一问题,本实施例给出了一种滑动过程中防止界面抖动的方法,如图1和2所示,包括以下步骤:
(1)获取触摸屏上当前事件(motionEvent对象3)中最新坐标((x7,y7)),定义为当前坐标;定义该当前事件之前第一个事件(motionEvent对象2)中的最新坐标((x6,y6))为第一坐标,定义该当前事件之前第二个事件(motionEvent对象1)中的最新坐标((x2,y2))为第二坐标;
(2)计算第二坐标(x2,y2)与第一坐标(x6,y6)之间的距离,定义为第一距离,计算第一坐标(x6,y6)与当前坐标(x7,y7)的距离,定义为第二距离;
(3)判断第二距离是否大于第一距离的2倍,如果是,进入步骤(4),否则正常处理motionEvent对象3;
(4)在第一坐标(x6,y6)和当前坐标(x7,y7)之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件。
在本实施例中可以将缓冲点设置在第一坐标(x6,y6)和当前坐标(x7,y7)之间的中点上。但在实际应用中,为了降低计算量,若当前事件包括若干个触摸点,则可以选择第一坐标和当前坐标正中间的一个触摸点作为缓冲点。例如对于motionEvent对象1,motionEvent对象2,若二者之间需要找到一个缓冲点,则可以选择motionEvent对象2中的触摸点(x4,x4)作为缓冲点,从而避免进行距离计算。
在本实施例中,进行距离求取的时候也可以进行简化,降低计算量,例如:设定一第一阈值,计算第二坐标与第一坐标的横坐标之差,计算第一坐标与当前坐标的横坐标之差,如果上述两个差值之差小于第一阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的纵坐标之差作为第一距离,将第一坐标与当前坐标的纵坐标之差作为第二距离。
同上,可以设定一第二阈值,计算第二坐标与第一坐标的纵坐标之差,计算第一坐标与当前坐标的纵坐标之差,如果上述两个差值之差小于第二阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的横坐标之差作为第一距离,将第一坐标与当前坐标的横坐标之差作为第二距离。
在实际操作中,可采用下面的方法来实现。
定义X_old、Y_old用来保存上一个事件的坐标;M_old保存上一次对比的差量。通过Android平台实现,在Android中MotionEvent.java的一个接口为getAction(),该接口返回事件的类型有三种,分别是down事件、move事件和up事件,down事件表示按下的动作,move事件表示按下后不松开的动作,up事件表示手指抬起的动作,所以滑动屏幕,都会有一次down事件,多个move事件,一个up事件产生;
在接收到当前触摸坐标后,进行以下步骤:
步骤1、通过getAction()获取的值判断是否是down事件,如果是,则将该事件的坐标保存在变量X_old、Y_old,将M_old置为-1,并根据这个坐标进行相关的操作;
步骤2、如果不是down事件,则将获得事件中的最新坐标(X_new,Y_new)和X_old、Y_old中的最新坐标(XX_old、YY_old)对比,以对比X轴坐标为例:如果两点纵坐标之差小于设定的一个较小的阈值,同时横坐标相差的值大于2*M_old,且M_old不等于-1,则进行步骤3;否则直接处理当前事件,并将横坐标X与X_old的距离赋值给M_old,将当前事件中的坐标赋值给X_old、Y_old,然后从步骤1重复;
步骤3、getHistorySize()是MotionEvent.java的一个接口,返回值代表该对象中包含多少个点。通过getHistorySize()方法获取在点X_new和XX_old之间点的个数,然后在这些点中选择最中间的一个点作为缓冲点进行处理,在缓冲点处理完后再处理当前事件。
可通过各种手段实施本发明描述的技术。举例来说,这些技术可实施在硬件、固件、软件或其组合中。对于硬件实施方案,处理模块可实施在一个或一个以上专用集成电路(ASIC)、数字信号处理器(DSP)、可编程逻辑装置(PLD)、现成可编程门阵列(FPGA)、处理器、控制器、微控制器、电子装置、其他经设计以执行本发明所描述的功能的电子单元或其组合内。
对于固件和/或软件实施方案,可用执行本文描述的功能的模块(例如,过程、步骤、流程等)来实施所述技术。固件和/或软件代码可存储在存储器中并由处理器执行。存储器可实施在处理器内或处理器外部。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种滑动过程中防止界面抖动的方法,其特征在于,包括以下步骤:
(1)获取触摸屏上当前事件中最新坐标,定义为当前坐标;定义该当前事件之前第一个事件中的最新坐标为第一坐标,定义该当前事件之前第二个事件中的最新坐标为第二坐标;
(2)计算第二坐标与第一坐标之间的距离,定义为第一距离,计算第一坐标与当前坐标的距离,定义为第二距离;
(3)判断第二距离是否大于第一距离的2倍,如果是,进入步骤(4),否则正常处理当前事件;
(4)在第一坐标和当前坐标之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件。
2.根据权利要求1所述的滑动过程中防止界面抖动的方法,其特征在于,所述步骤(4)中,缓冲点设置在第一坐标和当前坐标之间的中点上。
3.根据权利要求1所述的滑动过程中防止界面抖动的方法,其特征在于,所述步骤(4)中,若当前事件包括若干个触摸点,则选择第一坐标和当前坐标正中间的一个触摸点作为缓冲点。
4.根据权利要求1所述的滑动过程中防止界面抖动的方法,其特征在于,设定一第一阈值,计算第二坐标与第一坐标的横坐标之差,计算第一坐标与当前坐标的横坐标之差,如果上述两个差值之差小于第一阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的纵坐标之差作为第一距离,将第一坐标与当前坐标的纵坐标之差作为第二距离。
5.根据权利要求1所述的滑动过程中防止界面抖动的方法,其特征在于,设定一第二阈值,计算第二坐标与第一坐标的纵坐标之差,计算第一坐标与当前坐标的纵坐标之差,如果上述两个差值之差小于第二阈值,则在进行步骤(2)的距离计算时,将第二坐标与第一坐标的横坐标之差作为第一距离,将第一坐标与当前坐标的横坐标之差作为第二距离。
6.一种滑动过程中防止界面抖动的装置,其特征在于,包括:
获取和定义单元,用于获取触摸屏上当前事件中最新坐标,定义为当前坐标;定义该当前事件之前第一个事件中的最新坐标为第一坐标,定义该当前事件之前第二个事件中的最新坐标为第二坐标;
距离计算单元,用于计算第二坐标与第一坐标之间的距离,定义为第一距离,计算第一坐标与当前坐标的距离,定义为第二距离;
判断单元,用于判断第二距离是否大于第一距离的2倍,如果是,运行缓冲点设置单元,否则正常处理收到的事件;
缓冲点设置单元,用于在第一坐标和当前坐标之间设置缓冲点,按照缓冲点位置开始正常处理收到的事件;
界面滑动模块,用于根据当前收到的事件坐标滑动界面。
7.根据权利要求6所述的滑动过程中防止界面抖动的装置,其特征在于,在所述缓冲点设置单元,包括:一缓冲点坐标计算模块,用于求取第一坐标和当前坐标之间的中点上的坐标。
8.根据权利要求7所述的滑动过程中防止界面抖动的装置,其特征在于,所述缓冲点坐标计算模块,用于在当前事件包括若干个触摸点时,计算第一坐标和当前坐标正中间的一个触摸点的坐标作为缓冲点。
9.根据权利要求6所述的滑动过程中防止界面抖动的装置,其特征在于,所述距离计算单元包括:
第一计算单元,用于根据第二坐标与第一坐标的横坐标之差、第一坐标与当前坐标的横坐标之差,得到两个差值之差;
第一判断单元,用于判断两个差值之差是否小于第一阈值;
第一判定模块,用于当两个差值之差小于第一阈值时,将第二坐标与第一坐标的纵坐标之差作为第一距离,将第一坐标与当前坐标的纵坐标之差作为第二距离。
10.根据权利要求6所述的滑动过程中防止界面抖动的装置,其特征在于,所述距离计算单元包括:
第二计算单元,用于根据第二坐标与第一坐标的纵坐标之差、第一坐标与当前坐标的纵坐标之差,得到两个差值之差;
第二判断单元,用于判断两个差值之差是否小于第二阈值;
第二判定模块,用于当两个差值之差小于第二阈值时,将第二坐标与第一坐标的横坐标之差作为第一距离,将第一坐标与当前坐标的横坐标之差作为第二距离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310682215.1A CN103677416B (zh) | 2013-12-13 | 2013-12-13 | 一种滑动过程中防止界面抖动的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310682215.1A CN103677416B (zh) | 2013-12-13 | 2013-12-13 | 一种滑动过程中防止界面抖动的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103677416A CN103677416A (zh) | 2014-03-26 |
CN103677416B true CN103677416B (zh) | 2016-09-07 |
Family
ID=50315190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310682215.1A Active CN103677416B (zh) | 2013-12-13 | 2013-12-13 | 一种滑动过程中防止界面抖动的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103677416B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014169654A1 (zh) * | 2013-09-29 | 2014-10-23 | 中兴通讯股份有限公司 | 触摸屏触点处理方法、装置及终端 |
CN105320316B (zh) * | 2014-06-17 | 2020-12-11 | 中兴通讯股份有限公司 | 一种触摸屏的去抖动方法、装置及终端 |
US10444899B2 (en) * | 2017-01-23 | 2019-10-15 | Stmicroelectronics Asia Pacific Pte Ltd | Multiple threshold motion tolerance to filter coordinate jitter in touch sensing |
CN107908344B (zh) * | 2017-11-08 | 2019-09-10 | 平安科技(深圳)有限公司 | 防止界面抖动的方法、装置、设备及计算机可读存储介质 |
CN112835463B (zh) * | 2019-11-25 | 2024-04-16 | 北京小米移动软件有限公司 | 位置坐标上报方法及装置、电子设备、存储介质 |
CN112925466B (zh) * | 2019-12-06 | 2023-04-25 | 北京小米移动软件有限公司 | 触控控制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833390A (zh) * | 2009-03-10 | 2010-09-15 | 阿尔派株式会社 | 电子设备及其输入处理方法 |
CN101859219A (zh) * | 2010-06-22 | 2010-10-13 | 北京握奇数据系统有限公司 | 触摸屏触点坐标去抖动的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130014057A1 (en) * | 2011-07-07 | 2013-01-10 | Thermal Matrix USA, Inc. | Composite control for a graphical user interface |
-
2013
- 2013-12-13 CN CN201310682215.1A patent/CN103677416B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833390A (zh) * | 2009-03-10 | 2010-09-15 | 阿尔派株式会社 | 电子设备及其输入处理方法 |
CN101859219A (zh) * | 2010-06-22 | 2010-10-13 | 北京握奇数据系统有限公司 | 触摸屏触点坐标去抖动的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103677416A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677416B (zh) | 一种滑动过程中防止界面抖动的方法和装置 | |
CN104007932B (zh) | 一种触摸点识别方法及装置 | |
CN105117156B (zh) | 一种信息处理方法及电子设备 | |
CN104166553B (zh) | 一种显示方法及电子设备 | |
US11194368B2 (en) | Accelerometer-based biometric data | |
CN107678664A (zh) | 一种终端界面切换、手势处理的方法、装置及终端 | |
CN103995668B (zh) | 一种信息处理方法和电子设备 | |
JP6128363B2 (ja) | データ報告方法および装置、ならびに端末デバイス | |
US9189152B2 (en) | Touch device and method for dynamically setting touch inactive area, and non-transitory recording medium | |
CN103294402A (zh) | 智能终端的应用界面切换方法及装置 | |
JP2014529138A (ja) | タッチ入力を用いたマルチセル選択 | |
CN104423855B (zh) | 一种信息处理方法及电子设备 | |
CN105824610A (zh) | 一种基于终端的应用程序图标的排列方法和装置 | |
CN102902407B (zh) | 一种触摸屏输出显示触摸笔迹的方法及设备 | |
CN106249941A (zh) | 电子设备及其控制方法 | |
CN107577415A (zh) | 触摸操作响应方法及装置 | |
CN108153454B (zh) | 多点触摸切换方法、装置、存储介质及终端设备 | |
US20210205698A1 (en) | Program, electronic device, and method | |
CN107608550A (zh) | 触摸操作响应方法及装置 | |
CN111679767B (zh) | 窗口扩展方法和相关联的电子设备 | |
CN105824534B (zh) | 一种信息处理方法及电子设备 | |
CN104641341A (zh) | 供电设备的识别电路以及受电设备 | |
KR20160019449A (ko) | 간접 입력의 명확화 기법 | |
CN103543933A (zh) | 一种选择文件的方法及触摸终端 | |
JP6212201B2 (ja) | マルチフィンガータッチインタラクション中のパンおよびスケーリングの検出 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Patentee after: OPPO Guangdong Mobile Communications Co., Ltd. Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Patentee before: Guangdong Opel Mobile Communications Co., Ltd. |