检测ListView上的滑动

时间:2014-10-29 17:30:42

标签: android listview android-listview

如何在listView上检测向上和向下滑动。我尝试了以下方法

  1. 使用onSimpleGestureListener,onFling()适用于fling(即当我在滑动后离开屏幕时)。但它不会被轻扫(手指最终没有从屏幕上抬起)。
  2. 2.在onSimpleGestureListener的onScroll()中,distanceY对于检测向上和向下滑动没有帮助。它适用于fling检测,但在特定滑动中将其值从负值波动到正值。

    1. 使用onTouchListener

          public boolean onTouch(View v, MotionEvent event) {
      
              return gestureDetector.onTouchEvent(event);
              switch (event.getAction()) {
      
                  case MotionEvent.ACTION_DOWN:
                      before = event.getY();
                      break;
                  case MotionEvent.ACTION_MOVE:
                      now = event.getY();
      
                      if (now < before) {
      
                             upSwipe()  
      
                      } else if (now > before) {
      
                             downSwipe();
      
                     } 
      
              }
              return false;
          }
      

      当我向上滑动时,变量now有时会变得大于变量previous,有时变小。因此,调用upSwipe()和downSwipe()。

    2. 我敲了几个小时。不能单独这样做。

1 个答案:

答案 0 :(得分:-1)

您是否尝试过返回true而不是返回false。

基于Detecting Common Gestures documentation

“注意创建一个为ACTION_DOWN事件返回false的侦听器。如果这样做,将不会为后续的ACTION_MOVE和ACTION_UP事件字符串调用侦听器。这是因为ACTION_DOWN是所有触摸事件的起点。“