Android中的“swipe”和“fling”区别

42
在Android开发者手势设计部分,使用了“swipe”这个术语。
而在开发者部分,使用了“fling”这个术语。
这两个术语是否同义?从我所找到的资料来看,我认为它们是同义词,但没有明确说明。
话虽如此,如果我想实现“swipe”的功能,我应该在GestureDetector中实现onFling吗?
2个回答

38

拖动、滑动或甩动细节

滑动手势活动基于上下文的不同而有所不同。手势执行速度是拖动、滑动和甩动之间的主要区别。

  • 拖动:精细手势,较慢,更可控,通常有一个屏幕上的目标
  • 滑动:粗略手势,更快,通常没有屏幕上的目标
  • 甩动:粗略手势,没有屏幕上的目标

手势速度会影响操作是否可以立即撤消。

  • 基于结束速度以及受影响元素是否已经越过阈值(或可以撤销操作的点),滑动变成了甩动。
  • 拖动保持与元素的接触,因此反转手势方向将使元素回到阈值以下。
  • 甩动以更快的速度移动,并在通过阈值时删除与元素的接触,从而防止操作被撤消。

来源:https://www.google.com/design/spec/patterns/gestures.html


26

onFling() 当用户进行“快速滑动”时执行,这种运动具有速度来确定其类型。但是,如果用户仅触摸设备并慢慢地在屏幕上滑动,那就不会被视为“快速滑动”,而是一次轻扫。

这取决于您期望用户执行的运动类型。理想情况下,应该实现onFling()函数以捕获该运动,并实现onDrag()onDragFinished()以捕捉更微妙的运动,这些运动仍应被视为轻扫。


3
用户滚动时怎么办?从你的描述来看,“划动”似乎包括了滚动。这是真的吗? - Sean Beach
1
这是正确的。它遵循相同的逻辑,即用户可能会以不同的方式滚动,因此实现onFling和onDrag可以安全地捕获所有输入。此外,滚动通常是通过向上或向下滑动或投掷来执行的,因此您可以在这些函数内部进行检查以检查运动的方向并相应地采取行动。 - Adam Alyyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接