android - Android 中的 MotionEvent.ACTION_DOWN 过于敏感。即使只是触摸屏幕片刻,也会收到此事件

标签 android gesture ontouchlistener

我有一个布局(一个表格布局)。每当用户执行“向下”手势时,都需要调用特定函数。但是,ontouchlistener 会立即捕获事件,而不是等到用户执行正确的“下拉”手势。

我的代码是:

homePageTableLayout.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View view, MotionEvent event) {
                if ((event.getAction() == MotionEvent.ACTION_DOWN)) {
                    startSyncData();
                }
                return true;
            }
        });

目前,正在发生的是立即调用 startSyncData() 函数。 最终结果应该有点类似于 android 常用的“pulltorefresh”库,但在这个用例中,我不必更新 View 。我只需要将一些数据发布到服务器。 我无法使用“pulltorefresh”库,因为它不支持“拉取”表格布局。我尝试将表格布局放在 ScrollView 中,但这只会破坏 UI。

最佳答案

您可以尝试在 ACTION_MOVEACTION_UP 中执行此操作 - 如果您需要仅在向下滑动手势时执行此操作,这应该会有所帮助,引入四个全局 float :x, y, x1, y1,然后在ACTION_DOWN中:

x = event.getX();
y = event.getY();

ACTION_MOVEACTION_UP:

x1 = event.getX();
y1 = event.getY();

然后在 ACTION_UP 中:

if (y1 > y) {        //pointer moved down (y = 0 is at the top of the screen)
    startSyncData(); 
}

关于android - Android 中的 MotionEvent.ACTION_DOWN 过于敏感。即使只是触摸屏幕片刻,也会收到此事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29792496/

相关文章:

Android - Soundpool 不会在后台播放许多应用程序的所有声音。

android - 查看sqlite数据库的代码错误

iphone - 如何在 Cocos2d CCLayer 中添加摇动手势?

android - 如何在触摸事件中在图像中显示十字标记?

Android发送 Intent 将SD卡中的照片附加为0长度文件

java - 在Android中扩展应用程序和扩展 Activity 有什么区别?

timer - 如何将 onTab 信号从嵌套的有状态小部件发送到 main.dart

ios - 在 iOS 中做一个搓屏手势?

java - Android ACTION_UP 在 ACTION_MOVE 之后不会被触发

java - Android OnTouchListener 不起作用