Android 设备的屏幕灵敏度

问题描述 投票:0回答:2

我在测试过程中遇到了一个非常奇怪的场景,也许你可以照亮我。

场景: 该应用程序包含在 Surfaceview 中,我在其中处理触摸事件。我的屏幕上有一个图像,用户将手指放在上面,然后将其收回。就像短按按钮一样。

出了什么问题:

配备 SuperAmoled 屏幕的三星 Galaxy S - 触发的触摸事件为:向下,然后向上。就像平常一样

Nexus One、Desire - 触发的触摸事件有:向下、移动、移动、向上 移动手势很小,例如 +- 1 px,但确实存在。现在想象一下,我有在 Move 事件中触发的代码。

因此,在我的 Galaxy S 上进行测试一切正常,在 Nexus 上进行测试却失败了,因为它没有按预期做出反应。

我的问题:

  • 有什么办法可以防止这种情况发生吗?
  • 这是因为屏幕类型和灵敏度吗?
android touch touchscreen
2个回答
1
投票

使用布尔标志来防止代码在 Move 事件中运行,方法是在 down 事件中将标志设置为 true,然后调用方法。


0
投票

这是由于设备显示灵敏度造成的。我在三星 Galaxy 10 和 10+ 上遇到了这种破坏行为。当手指没有移动时,显示屏会捕获这些微动作并向我发送动作,从而打破了通常的点击逻辑。

解决了这个问题,我实现了一个以点为单位的阈值(在我的例子中为20点,移动距离像素*密度)以完全过滤掉这些微移动。

仅针对第一个移动事件检查阈值。因此,在超过阈值之前,所有移动都会被忽略,但如果移动最终超过阈值,所有进一步的移动都会被接受,直到下一个手指按下事件。

© www.soinside.com 2019 - 2024. All rights reserved.