OnTouchListener: Streichen Sie über den Bildschirm

Bitte schauen Sie sich den folgenden Code an. Ich poste NUR die wichtigen Abschnitte des Codes.

activity_game.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fullView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Game" >

    <TextView
        android:id="@+id/numberOfQuestionsLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:text="TextView" />
</RelativeLayout>

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

Hinweis - Ich besitze diese Klasse des Codes nicht. Es wurde von einem anderen SO-Mitglied geschrieben.

     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;
            }
        }

Dieser Code ist so eingestellt, dass ich auf die Aktivität tippen und mit dem Finger über sie streichen kann. Aber es gibt ein Problem. Mir ist aufgefallen, dass ich in der Aktivität eine Leerstelle wischen muss, an der keine Schaltflächen, Bilder, Textfelder usw. vorhanden sind, damit dies funktioniert. Aber das brauche ich nicht. Selbst wenn der Benutzer die Tasten berührt und nach links, rechts oder unten wischt, sollte dies funktionieren. Wie soll ich das machen?

Antworten auf die Frage(0)

Ihre Antwort auf die Frage