Ich möchte, dass die fling
Gestenerkennung in meiner Android-Anwendung funktioniert.
Was ich habe, ist eine GridLayout
, die 9 ImageView
s enthält . Die Quelle finden Sie hier: Romain Guys 'Grid Layout .
Diese Datei stammt aus der Photostream-Anwendung von Romain Guy und wurde nur geringfügig angepasst.
Für die einfachen Klick Situation muss ich nur setzen die onClickListener
für jeden ImageView
ich hinzufügen die Haupt sein activity
welche Geräte View.OnClickListener
. Es scheint unendlich komplizierter, etwas zu implementieren, das a erkennt fling
. Ich nehme an, das liegt daran, dass es sich überspannen kann views
?
Wenn meine Aktivität implementiert wird
OnGestureListener
, weiß ich nicht, wie ich das als Gestenlistener für dieGrid
oder die vonImage
mir hinzugefügten Ansichten festlegen soll .public class SelectFilterActivity extends Activity implements View.OnClickListener, OnGestureListener { ...
Wenn meine Aktivität implementiert
OnTouchListener
wird, habe ich keineonFling
Methode dafüroverride
(es gibt zwei Ereignisse als Parameter, mit denen ich feststellen kann, ob der Fling bemerkenswert war).public class SelectFilterActivity extends Activity implements View.OnClickListener, OnTouchListener { ...
Wenn ich eine benutzerdefinierte machen
View
, wieGestureImageView
dass sichImageView
ich weiß nicht , wie die Aktivität zu sagen , dass einfling
aus der Sicht aufgetreten ist. Auf jeden Fall habe ich dies versucht und die Methoden wurden nicht aufgerufen, als ich den Bildschirm berührte.
Ich brauche wirklich nur ein konkretes Beispiel dafür, wie man über Ansichten hinweg arbeitet. Was, wann und wie soll ich das anhängen listener
? Ich muss auch einzelne Klicks erkennen können.
// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
// don't accept the fling if it's too short
// as it may conflict with a button push
if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
if (velocityX > 0) {
moveRight();
} else {
moveLeft();
}
return true;
} else {
return false;
}
}
});
Ist es möglich, eine transparente Ansicht über den oberen Bildschirmrand zu legen, um Schleudern zu erfassen?
Kann ich inflate
den GestureDetector
als Konstruktor-Parameter an eine neue Unterklasse übergeben ImageView
, die ich erstellt habe, wenn ich meine untergeordneten Bildansichten nicht aus XML auswähle ?
Dies ist die sehr einfache Aktivität, für die ich versuche, die fling
Erkennung zum Laufen zu bringen : SelectFilterActivity (Angepasst aus Fotostream) .
Ich habe mir diese Quellen angesehen:
Bisher hat nichts für mich funktioniert und ich hatte auf einige Hinweise gehofft.