gpt4 book ai didi

android - ScaleGestureDetector 未检测到手势结束

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:17 26 4
gpt4 key购买 nike

我已按照 Android 文档中的说明将 ScaleGestureDetector 连接到 OnTouchListener。由于某些原因,ScaleGestureDetector 并不总是检测到捏合手势的结束。这主要发生在从大到小快速捏合时。

效果是,在我松开两根手指后,检测器不会触发手势结束事件。如果我之后用一个触摸屏幕,它仍然认为我正在继续缩放手势(继续触发 onScale 事件)。我必须做另一个手势才能让检测器触发结束事件。

我已将日志添加到 OnTouchListener 中,当缩放手势卡住时,当使用一根手指且 event.getPointerCount() 为 1 时,我仍然可以正常获得运动事件。

我已确保没有任何其他听众干预。具有 onTouchListener 的 View 不是屏幕上唯一的 View ,但当我非常小心地在这个 View 中开始和结束手势时,也会发生这种效果。

有什么方法可以改进末端检测吗?

或者如果我有办法手动设置 ScaleGestureDetector 触发 onScaleEnd 并将 scaleGestureDetector.isInProgress() 更改为 false?

最佳答案

在应用上述修复后,我想出了一个解决方案。我的应用程序同时使用了 ScaleGestureDetector 和普通的 GestureDetector 所以我在我的 onScroll 方法中实现了(来自 GestureDetector) :

if (m_dualFingerGestureDetector.isInProgress() && (evt1.getPointerCount() == 2 || evt2.getPointerCount == 2)
{
return false;
}
...

我的变量如下:

m_dualFingerGestureDetector 是我的ScaleGestureDetector
evt1evt2 是拖动手势的 MotionEvent。如果只有一个事件,可以缩短上面的代码:

if (m_dualFingerGestureDetector.isInProgress() && evt.getPointerCount() == 2)
{
return false;
}
...

这允许构建非常漂亮的用户界面。我总是建议使用手势检测器的组合来为您的应用程序添加平移和缩放功能。

关于android - ScaleGestureDetector 未检测到手势结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com