2017-04-26 142 views
1

我正在测试左右滑动活动。我有以下代码:onFling事件未触发

public class MainActivity extends AppCompatActivity implements LocationListener, GestureDetector.OnGestureListener { 
    ... 
    private GestureDetectorCompat gestureDetector; 
    ... 
    protected void onCreate(Bundle savedInstanceState) { 
    ... 
    gestureDetector = new GestureDetectorCompat(this, this); 
    ... 
    } 

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 

     if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
      return false; 


     if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      // right to left swipe 
      Toast.makeText(getApplicationContext(), "right to left swipe", Toast.LENGTH_LONG); 

     } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      Toast.makeText(getApplicationContext(), "left to right swipe", Toast.LENGTH_LONG); 
     } 

    Log.i("EVENT:", "Event triggered"); 
    return true; 
    } 


    public boolean onTouchEvent(MotionEvent event) { 
    gestureDetector.onTouchEvent(event); 

    return super.onTouchEvent(event); 
    } 

我希望当我向左和向右滑动时调用onFling方法。但是在onFling中我的消息都没有被调用。当我看到控制台时,我只是看到:

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN 
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP 

我会做什么错?

回答

0

发生此问题时,很可能是由于布局中的某个元素。我有一个RelativeLayout的父元素的高度和宽度的子元素:

<ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerHorizontal="true" android:id="@+id/listView" android:layout_alignParentTop="true"/> 

当我删除它,onFling事件被调用。