滑动左/右的事件

滑动左/右的事件

问题描述:


我有一个日历,我想让左/右滑动和切换月份成为可能。
是否有任何倾听者左右滑动?
谢谢!滑动左/右的事件

+0

这个问题的答案在这里详细: http://*.com/questions/937313/android-basic-gesture-detection –

你可以用户SimpleOnGestureListener如下面的例子:(显然,代替实际的代码,移动到下一首/上月的吐司)

public class SelectFilterActivity extends Activity implements OnClickListener 
{ 

private static final int SWIPE_MIN_DISTANCE = 120; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
private GestureDetector gestureDetector; 
View.OnTouchListener gestureListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    /* ... */ 

    // Gesture detection 
    gestureDetector = new GestureDetector(new MyGestureDetector()); 
    gestureListener = new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      return gestureDetector.onTouchEvent(event); 
     } 
    }; 

} 

class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(SelectFilterActivity.this, "Left Swipe", Toast.LENGTH_SHORT).show(); 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(SelectFilterActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception e) { 
      // nothing 
     } 
     return false; 
    } 

} 

然后你把它连接到您的视图:

// Do this for each view added to the grid 
view.setOnClickListener(SelectFilterActivity.this); 
view.setOnTouchListener(gestureListener); 
+0

它不工作。 'gridview.setOnClickListener(SelectFilterActivity.this);' 错误: '类型SelectFilterActivity没有外围实例是在范围访问'和另一个错误 'gridview.setOnTouchListener(gestureListener);' 错误: 'gestureListener不能解决了一个变量' –

+0

那么你需要适应你的具体情况,你没有提供足够的细节来编写完整的解决方案。重要的部分是MyGestureDetector类,你需要以某种方式插入你的视图 – Guillaume

SimpleOngestureListener可以捕捉onFling; 你可以重写这个来捕捉滑动。

class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       //do your stuff 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       //do your stuff 
      } 
     } catch (Exception e) 
     { 
      // nothing 

     } 
     return false; 
    } 
+0

我们不复制来自同一线程的另一个答案的代码... –

+0

我们没有...? 但不,谢谢。 我一直在使用这段代码一段时间, 显然有其他人。 – ron