OnTouchListener:在屏幕上滑动

请查看以下代码。 我只发布代码的重要部分。

activity_game.xml

   

Game.java

 public class Game extends Activity { private View fullView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); fullView = (View)findViewById(R.id.fullView); fullView.setOnTouchListener(imageViewSwiped); } OnTouchListener imageViewSwiped = new OnSwipeTouchListener() { public boolean onSwipeRight() { //code removed } public boolean onSwipeLeft() { //code removed return true; } public boolean onSwipeBottom() { //code removed return true; } }; } 

OnSwipTouchListener.java

注意 – 我没有这类代码。 它由另一个SO成员撰写。

  package game.Game; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class OnSwipeTouchListener implements OnTouchListener { private final GestureDetector gestureDetector = new GestureDetector(new GestureListener()); public boolean onTouch(final View v, final MotionEvent event) { gestureDetector.onTouchEvent(event); return true; } private final class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { return super.onDown(e); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { result = onSwipeRight(); } else { result = onSwipeLeft(); } } } else { if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { result = onSwipeBottom(); } else { result = onSwipeTop(); } } } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public boolean onSwipeRight() { return false; } public boolean onSwipeLeft() { return false; } public boolean onSwipeTop() { return false; } public boolean onSwipeBottom() { return false; } } 

此代码设置在我可以触摸活动和滑动的位置。 但有个问题。 我注意到我需要在没有按钮,图像,文本框等的活动中刷一个空白区域才能使其工作。 但这不是我需要的。 即使用户触摸按钮并向左,向右或向下滑动也应该有效。 我该怎么做呢?