- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在装有 Android 4.0.4 的三星 Galaxy Note 10.1 上,当两根手指放在屏幕上时,GestureDetector
不会触发 OnGestureListener#onScroll
(它会触发一根手指) .这适用于其他设备。在我的应用程序中,我只想在涉及至少两个手指时启用滚动。
这是重现现象的 View 实现:
public class MyView extends View {
GestureDetector scrollGestureDetector;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
scrollGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX, final float distanceY) {
System.out.println("SCROLL " + distanceX + ", " + distanceY);
return true;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
scrollGestureDetector.onTouchEvent(event);
return true;
}
}
这种行为是否已知/记录/需要?是否有已知的解决方法?
最佳答案
您需要在 GestureDetector.SimpleOnGestureListener
中再实现一种方法 onDown
,如下所示:
scrollGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX, final float distanceY) {
System.out.println("SCROLL " + distanceX + ", " + distanceY);
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
});
因为根据this document和 this guide :
Notified when a tap occurs with the down MotionEvent that triggered it. This will be triggered immediately for every down event. All other events should be preceded by this.
和
Whether or not you use GestureDetector.OnGestureListener, it's best practice to implement an onDown() method that returns true. This is because all gestures begin with an onDown() message. If you return false from onDown(), as GestureDetector.SimpleOnGestureListener does by default, the system assumes that you want to ignore the rest of the gesture, and the other methods of GestureDetector.OnGestureListener never get called. This has the potential to cause unexpected problems in your app. The only time you should return false from onDown() is if you truly want to ignore an entire gesture.
需要在onDown
中返回true
,这样onScroll
才会被触发。
关于android - 三星 Galaxy Note 10.1 上的 GestureDetector 未调用 OnGestureListener#onScroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287218/
有没有办法让 GestureDetector 覆盖所有子 GestureDetectors 的功能? 我有一个复杂的小部件,我希望能够轻松地在较高级别覆盖它的所有行为。例如,将免费用户锁定在功能之外。
如果我有一个具有内部 GestureDetector 的 GestureDetector,我该如何设置它以便两个检测器都接收到点击事件? 你可以在这里看到运行代码: https://dartpad.d
如果 GestureDetector.SimpleOnGestureListener 与 GestureDetector.OnGestureListener 执行相同的操作,但不需要未使用的代码,那么
我正在编写简单的代码来检测所有手势,如滑动、滚动等,并打算实现接口(interface) GestureDetector.OnGestureListener用于覆盖它的方法,但我知道同样可以用 Ges
我已经用不同的子 Activity 实现了我的 TabActivity: intent = new Intent().setClass(this, MyChildTabActiviy.class);
我创建了此代码,但我想拥有4x4的翻转卡,您能告诉我该怎么做吗?请 下面的代码是否可以帮助我谢谢你。 我想重复GestureDetector 4 x 4。 在新的flip_card.dart文件中。
我创建了标准手势检测器,它根据给定的手势更改 TextView 。当我的 XML 仅包含我希望更改的相对布局和 TextView 时,一切正常。然而,当我添加网格布局和一些图标时,手势检测器不再工作,
出于某种原因,我的手势检测器无法正常工作。我已经查看了其他多个答案,说要在 down 上实现。我有,但它仍然不起作用。有人可以帮忙吗?这是我无法正常工作的代码。如您所见,我执行了 onDown pub
我正在学习使用 GestureDetector 并遵循 android 的官方开发人员指南,但是当我尝试运行一段代码时遇到了问题.. public class MainActivity extends
我必须在我的程序中使用 GestureDetectors。一个工作精美,另一个则不然。据我所知,它们的实现方式相同。 这是实现不起作用的代码: myExcuseGestureDetector = ne
我正在尝试使用 GestureDetector 使文本小部件可缩放,但它根本不起作用,我什至没有收到任何错误... 请注意,我尝试了很多事情,比如用 GestureDetector 包裹脚手架本身..
当我在 GestureDetector 中有一个 ListView 并且我覆盖了 onVerticalDragUpdate 方法时,ListView 无法滚动. 我如何重写 onVerticalDra
我正在尝试在我的 zoomable_images plugin 中实现双击缩放功能但是GestureTapCallback不提供点击位置信息。 理想情况下,偏移量将由回调返回。有其他 API 吗? 最
我有这个代码 itemizedOverlay = new MyItemizedOverlay(drawable,this); itemizedOverlay.setGestureDetector(ne
我正在使用 GestureDetector 并没有找到任何告诉您拖动方向的 onXYZ 事件。 最佳答案 你试过 onPanUpdate(details) 方法了吗?这是你可以做到的。 Gesture
我有两个容器在一个堆栈中,两个容器都有 GestureDetector。第一个容器的 OnTap 工作正常,但它不适用于另一个容器。第一个容器是图像,第二个容器是部分对齐在第一个容器上方的绿色背景。
我制作了一个简单的测试用例应用程序,您可以在其中使用 GestureDetector 单击一个小部件,该小部件使用 setState 触发对 tapCount 变量的更新。 应用程序在模拟器中运行,文
在我的 build ,我有这个函数,基本上堆叠一个button和一个 counter ,我还传递了一个函数(这让我对所有按钮重用 buildbuttoncolumn,而不是复制周围的代码 我的构建:
当用户在外面轻敲但我无法让它工作时,试图用 GestureDetector 使 TextFormField 失去焦点。 onTap 从不触发。 class EditScreen extends Sta
我正在尝试使 GestureDetector 在堆栈中工作,堆栈顶部有一个容器,但从未调用 onTap 回调。 如您所见,即使使用 HitTestBehavior.translucent 也不起作用
我是一名优秀的程序员,十分优秀!