N
no1Ltan
Fortgeschrittenes Mitglied
- 7
Hallo,
ich habe im Internet eine Klasse gefunden, mit der man Touch-Gesten in seine App einbinden kann.
Mit Touch-Gesten meine ich horizontales und vertikales Wischen.
Der Code dieser Klasse:
Hier ein Beispiel des Code-Schreibers, wie man die Klasse implementieren kann:
Die Klasse habe ich bereits mittels Rechtsklick auf App -> New -> Java Class hinzugefügt.
Allerdings ist mein Problem, dass ich keine einzelne Activity habe,
sondern eine MainActivity und 3 Fragmente, die ich mittels ViewPager hin- und herwechsele.
Meine MainActivity ist "nur" das Grundgerüst.
Ich würde gerne diese SimpleGestureListener-Funktionalität in 1 Fragment benutzen.
(Allerdings nur die nach oben bzw. nach unten-Wischen Geste - um z.B. Methoden aufzurufen).
Muss ich den SimpleGestureListener trotzdem in die MainActivity einbinden (so wie im Beispiel oben)
oder reicht es in dem Fall dies in meinem Ziel-Fragment zu tun?
Ich hatte es genau wie in dem Beispiel oben gemacht.
Allerdings zeigt mir die Log nichts an, sobald ich nach oben oder unten wische.
Daher vermute ich, dass es in meinem Fall nicht in die MainActivity gehört.
Meine App kennt ihr ja schon:
Wie viele Klassen und Layouts brauche ich für meine App?
Grüße
ich habe im Internet eine Klasse gefunden, mit der man Touch-Gesten in seine App einbinden kann.
Mit Touch-Gesten meine ich horizontales und vertikales Wischen.
Der Code dieser Klasse:
Code:
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
/**
* Created by CoXier on 17-2-21.
*/
public class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final String TAG = "SimpleGestureListener";
private Listener mListener;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.i(TAG,e1.toString()+"\n"+e2.toString());
Log.d(TAG,"distanceX = "+distanceX+",distanceY = "+distanceY);
if (mListener == null)
return true;
if (distanceX == 0 && Math.abs(distanceY) > 1){
mListener.onScrollVertical(distanceY);
}
if (distanceY == 0 && Math.abs(distanceX) > 1){
mListener.onScrollHorizontal(distanceX);
}
return true;
}
public void setListener(Listener mListener) {
this.mListener = mListener;
}
interface Listener{
/**
* left scroll dx >0
* right scroll dx <0
* @param dx
*/
void onScrollHorizontal(float dx);
/**
* upward scroll dy > 0
* downward scroll dy < 0
* @param dy
*/
void onScrollVertical(float dy);
}
}
Hier ein Beispiel des Code-Schreibers, wie man die Klasse implementieren kann:
Code:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private GestureDetector mDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SimpleGestureListener simpleGestureListener = new SimpleGestureListener();
simpleGestureListener.setListener(new SimpleGestureListener.Listener() {
@Override
public void onScrollHorizontal(float dx) {
Log.i(TAG,"horizontal = " +dx);
}
@Override
public void onScrollVertical(float dy) {
Log.i(TAG,"vertical = " +dy);
}
});
mDetector = new GestureDetector(this, simpleGestureListener);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
}
Die Klasse habe ich bereits mittels Rechtsklick auf App -> New -> Java Class hinzugefügt.
Allerdings ist mein Problem, dass ich keine einzelne Activity habe,
sondern eine MainActivity und 3 Fragmente, die ich mittels ViewPager hin- und herwechsele.
Meine MainActivity ist "nur" das Grundgerüst.
Ich würde gerne diese SimpleGestureListener-Funktionalität in 1 Fragment benutzen.
(Allerdings nur die nach oben bzw. nach unten-Wischen Geste - um z.B. Methoden aufzurufen).
Muss ich den SimpleGestureListener trotzdem in die MainActivity einbinden (so wie im Beispiel oben)
oder reicht es in dem Fall dies in meinem Ziel-Fragment zu tun?
Ich hatte es genau wie in dem Beispiel oben gemacht.
Allerdings zeigt mir die Log nichts an, sobald ich nach oben oder unten wische.
Daher vermute ich, dass es in meinem Fall nicht in die MainActivity gehört.
Meine App kennt ihr ja schon:
Wie viele Klassen und Layouts brauche ich für meine App?
Grüße