Swipe Event?

Sugan

Mitglied
Hallo zusammen,

ich möchte ein Programm schreiben, bei dem ich ähnlich wie bei vielen Apps (z.B. bei WhatsApp) oder z.B. beim iTunes Coverflow durch eine "Wisch-Geste" durch eine Mediathek "wischen" kann.

Das Swipe Event von JavaFX hat mich nicht weitergebracht, da ich damit mit einem "Wisch" immer nur um ein Objekt weiter komme. Ich möchte aber erreichen, dass ich je nach Geschwindigkeit des "Wischens" mehrer Objekte weiter komme. Wenn ich langsam den Finger über den Bildschirm ziehe, sollen die Objekte mit der gleichen Geschwindigkeit mitziehen und wenn ich den Finger schneller bewege, dann sollen die Objekte auch nach der "Wisch Geste" noch weiter ziehen...

Gibt es hierfür ein spezielles Event? Oder eine ganz andere Lösung?
Mir würde auch schon die Begrifflichkeit weiterhelfen, da ich unter dem Stichwort "Swipe" immer nur das oben beschriebene "um einen weiterblättern" gefunden habe.


Vielen Dank!

Sugan
 

Joose

Top Contributor
Gibt es hierfür ein spezielles Event? Oder eine ganz andere Lösung?
Ob es da ein spezielles Event gibt weiß ich nicht (glaub es aber weniger).
Eine ganz andere Lösung wäre dies einfach selber zu berechnen. Von der Position wo der Finger den Bildschirm berührt aus messen wie weit und schnell gewischt wird und entsprechend deine Liste (oder welches Control auch immer) entsprechend scrollen/blättern.
Ich muss dazu sagen das wäre mein erster Einfall dies selbst zu realisieren, wüsste aber keine bestimmten Werte bzw. Formel um dieses wischen entsprechend flüssig und annehmbar zu berechnen ;)
 

Sugan

Mitglied
Zum selber ausrechnen, die Idee hatte ich auch schon, mit Position und Systemzeit Geschwindigkeiten ausrechnen usw.... Funktioniert auch halbwegs, aber erstens sehr rukelig und zweitens weiß ich nicht, wie ich es anstelle, dass der Benutzer schnell "wischt" und das Register/ die Mediathek dann durchläuft und der Benutzer diese Bewegung aber mit erneutem Berühren stoppen kann.


Danke für die Links! Den ersten kenne ich zwar schon, aber durch das StackOverflow Forum werd ich mich mal durcharbeiten.
 

dzim

Top Contributor
Eventuell nutzt du dann noch Transitionen, die das "ruckeln" ausgleichen. Ich hätte, ausser ein paar pauschale Ideen, auch keinen Plan, wie man es genau machen könnte. Und das klingt nicht so, als könnte ich mal eben in 10-15 min ein Beispiel zusammenschrauben. Also bin ich dafür zu faul :)
 

Sugan

Mitglied
Hallo zusammen,

ich hab jetzt n bisschen was geschrieben und es klappt soweit auch schonmal...

Java:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Bilderleiste extends Application {

    private static final int imageNumber = 8;
    private static final int imageWidth = 400;
    private static final double imageAspectRatio = (double)4/3;
    private static final double imagesPerScene = 1.5;
    private static final int scrollbarHeight = 30;
   
    Image[] images = new Image[imageNumber];
    ImageView[] pics = new ImageView[imageNumber];
    BorderPane borderpane = new BorderPane();
    HBox hbox = new HBox();
    ScrollBar scrollbar = new ScrollBar();
   
    double start, newStart, startTime, speed;

    @Override
    public void start(Stage stage) {    
          for (int i = 0; i < imageNumber; i++) {
              images[i] = new Image(getClass().getResourceAsStream("fw" +(i+1)+ ".jpg"));
              pics[i] = new ImageView(images[i]);
              pics[i].setFitWidth(imageWidth);
              pics[i].setPreserveRatio(true);
              hbox.getChildren().add(pics[i]);
          }
         
          borderpane.getChildren().add(hbox);
          borderpane.setBottom(scrollbar);
          Scene scene = new Scene(borderpane, imageWidth*imagesPerScene, imageWidth/imageAspectRatio+scrollbarHeight);
          stage.setScene(scene);
          stage.setTitle("Bilderleiste");
         
          scrollbar.setLayoutX(scene.getWidth()-scrollbar.getWidth());
        scrollbar.setMin(0);
        scrollbar.setOrientation(Orientation.HORIZONTAL);
        scrollbar.setPrefHeight(scrollbarHeight);
        scrollbar.setMax(imageWidth*imageNumber-scene.getWidth()); 
        scrollbar.valueProperty().addListener((new ChangeListener<Number>(){
            public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val){
                hbox.setLayoutX(-(double)new_val);
            }
        }));
       
        hbox.setOnMousePressed(event -> {
            start= event.getX();;
            newStart=start;
            startTime=System.currentTimeMillis();
        });
        hbox.setOnMouseDragged(event ->{
            double xValue = hbox.getLayoutX()+event.getX()-newStart;
            if(xValue>scrollbar.getMin())
                hbox.setLayoutX(scrollbar.getMin());        
            else if(xValue<-scrollbar.getMax())
                hbox.setLayoutX(-scrollbar.getMax());
            else
                hbox.setLayoutX(xValue);
            scrollbar.setValue(-hbox.getLayoutX());
            newStart = event.getX();
        });
        hbox.setOnMouseReleased(event -> {
            double deltaTime = System.currentTimeMillis()-startTime;
            double distance = event.getX()-start;
            speed=Math.abs(distance/deltaTime);
        });
       
          stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

Aktuell läuft das über die Maus und nicht mit Touch, weil ich auf dem Rechner, an dem ich das schreibe kein Touch habe, aber das ließe sich ja leicht ersetzen...
Und falls ihr euch das kopiert und ausprobiert, braucht ihr noch min. so viele Bilder im selben Ordner, wie bei imageNumber angegeben und benennt sie fw1.jpg, fw2.jpg, fw3.jpg usw.

Folgende Frage: wie mache ich jetzt weiter? also er rechnet die Geschwindigkeit aus aber was mache ich, damit die HBox weiterläuft (zb. ab einer bestimmten Geschwindigkeit)?
Hab da im Moment einfach keine Idee...

Eventuell nutzt du dann noch Transitionen, die das "ruckeln" ausgleichen.

Haste dazu nähere Infos oder nen Link? Danke!

Vielen Dank im Vorraus

Sugan
 

dzim

Top Contributor
Wenn ich deinen Code richtig verstehe, dann könntest du an den Stellen eine TranslateTransition verwenden, an denen du layoutX auf der HBox setzt. Aber: Ich muss wirklich sagen, dass das eine reine Vermutung ist! Denn translateX ist etwas anderes als layoutX... Ob es am Ende das gleiche tut... Keine Ahnung! (Und wieder: Sorry, aber ohne das selbst zu implementieren, ist es schwer etwas dazu zu sagen.)
 

Sugan

Mitglied
Hi zusammen, ich bin inzwischen viel weiter mit meinem Programm.

Da man ja seine Lösung für eventuelle Mitleser posten soll: Ja, ich habe alles selber berechnet, falls die Rechnung tatsächlich erwünscht ist, schreibt mich an ;)
Den Rest habe ich über einen Thread geregelt, der im Hintergrung die Bilder verschiebt und das Programm kann trotdem gleichzeitig die Gesten des Nutzers bearbeiten und den Thread ggf. canceln.

LG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
G Mouse Event in anderemm Event auslösen AWT, Swing, JavaFX & SWT 50
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
W JavaFX Etwas Tabellenartiges + Cell-Content-Changed-Event (o.ä.) AWT, Swing, JavaFX & SWT 30
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
B Swing Windowbuilder Rückgabewert im Event AWT, Swing, JavaFX & SWT 3
Z Befehl Action Event Verlassen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
M JavaFX Absoluter Fokus während drag Event AWT, Swing, JavaFX & SWT 10
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
H Event Handling JavaFx - auf Event warten AWT, Swing, JavaFX & SWT 4
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
M Swing OnLoad-Event o. Ä. AWT, Swing, JavaFX & SWT 3
D Event Handling in Komplexen Anwendungen AWT, Swing, JavaFX & SWT 9
D Event Handling "Plötzlich" kein mouseMoved-Event AWT, Swing, JavaFX & SWT 2
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
J Swing JMenuItem-Event?? AWT, Swing, JavaFX & SWT 3
J Swing JTable-Event für einen Select?? AWT, Swing, JavaFX & SWT 3
A Mouse event und exit on close AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
F Event Handling AWT, Swing, JavaFX & SWT 7
J Button Event nur einmal ausführen AWT, Swing, JavaFX & SWT 3
S SWT Shell durch Event in der Größe verändern AWT, Swing, JavaFX & SWT 7
J Speichern, Event, Hintergrund getAppletContext AWT, Swing, JavaFX & SWT 2
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
T Anzahl Event Listeners AWT, Swing, JavaFX & SWT 4
A Swing JButton int im Event AWT, Swing, JavaFX & SWT 9
G Swing Onkeyup Event AWT, Swing, JavaFX & SWT 3
P Action Event abfangen etwas anders? AWT, Swing, JavaFX & SWT 2
3 Swing NullPointerException in AW Event-0? AWT, Swing, JavaFX & SWT 5
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
P Swing Event das ausgelöst wird, sobald Änderung der Größe Abgeschlossen ist AWT, Swing, JavaFX & SWT 4
A Shift-Tab-Event auslösen AWT, Swing, JavaFX & SWT 5
T Event Dispatch Thread und noch ein Thread AWT, Swing, JavaFX & SWT 7
W Swing Event bei Schließen des Fensters AWT, Swing, JavaFX & SWT 6
A Probleme mit dem KeyReleased-event AWT, Swing, JavaFX & SWT 3
J Doppelklick Event AWT, Swing, JavaFX & SWT 32
jueki Event bei Änderung der Spaltenbreite in einem JTable AWT, Swing, JavaFX & SWT 15
D jtabbedpane Event VOR tab-Wechsel AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Event Problem AWT, Swing, JavaFX & SWT 5
M JTree => Event Dispatching Error AWT, Swing, JavaFX & SWT 2
D Event in Fenster ausgeben + Observer + kein Plan AWT, Swing, JavaFX & SWT 2
H warum kann ich das focus event nicht abfangen ? AWT, Swing, JavaFX & SWT 5
X Den Wert von JSpinner setzen ohne Event AWT, Swing, JavaFX & SWT 3
H KeyUp-Event/Ereignis AWT, Swing, JavaFX & SWT 6
C Event Frage AWT, Swing, JavaFX & SWT 7
M Swing WindowListener -> Event abbrechen? AWT, Swing, JavaFX & SWT 2
K JToggleButton deaktivieren (komplettes event nehmen) AWT, Swing, JavaFX & SWT 2
R JTextField - Event bei jedem Buchstaben AWT, Swing, JavaFX & SWT 2
R WindowClosing Event - Schließen rückgängig machen? AWT, Swing, JavaFX & SWT 2
M Actionlistener ohne Event -.-?! AWT, Swing, JavaFX & SWT 2
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
D PropertyChangeListener Event auswertung AWT, Swing, JavaFX & SWT 7
O FlowLayout Button Event zuweisen? AWT, Swing, JavaFX & SWT 7
J remove() components bei event von JComboBox AWT, Swing, JavaFX & SWT 2
I event AWT, Swing, JavaFX & SWT 6
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
X Checkboxen erstellt mit MouseClicked event AWT, Swing, JavaFX & SWT 10
Dragonfire Swing One componentResized Event AWT, Swing, JavaFX & SWT 14
data89 Was mache ich mit "Dispatched Event Thread"/Substance falsch? AWT, Swing, JavaFX & SWT 4
Kr0e Event simulieren AWT, Swing, JavaFX & SWT 5
S Tastatur Event auserhalb des fokuses aufnehmen AWT, Swing, JavaFX & SWT 4
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M Swing Event mit Button AWT, Swing, JavaFX & SWT 7
B Wie kann ich ein event wieder beseitigen AWT, Swing, JavaFX & SWT 2
R Checkboxen - Event mit Controller abfangen AWT, Swing, JavaFX & SWT 7
Spin Window Event Beispiel AWT, Swing, JavaFX & SWT 6
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4
Iron Monkey JTable 2 Selektionsfarben Mouse-Event AWT, Swing, JavaFX & SWT 8
Dragonfire JTree, Selection via event AWT, Swing, JavaFX & SWT 7
K JButton auf JPanel in JTable (Darstellungs-/Event-Probleme) AWT, Swing, JavaFX & SWT 16
B JInternalFrame resize event AWT, Swing, JavaFX & SWT 2
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
D Event beim Laden eines JPanels? AWT, Swing, JavaFX & SWT 3
O Action Event auslösen bei unbekanntem JTextField AWT, Swing, JavaFX & SWT 3
R Registrieren um Event abzufangen AWT, Swing, JavaFX & SWT 3
N solange Maustaste gedrückt Event AWT, Swing, JavaFX & SWT 15
Daniel_L Nachrichten/Event aus nicht-modalen Dialogen abfragen? AWT, Swing, JavaFX & SWT 4
G Event an einer JComboBox registrieren AWT, Swing, JavaFX & SWT 8
S Welches Event beim ändern einer Zelle in einer JTable AWT, Swing, JavaFX & SWT 4
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A Event von Login zu Main klasse AWT, Swing, JavaFX & SWT 2
E bei gedrückte Taste --> Bitte nur ein Event auslösen AWT, Swing, JavaFX & SWT 4
W Kein MouseKlick-Event bei Bewegung AWT, Swing, JavaFX & SWT 2
J In JTextfield bei event schreiben AWT, Swing, JavaFX & SWT 4
G Combobox Event AWT, Swing, JavaFX & SWT 4
C Event nach Größenänderung des Fensters AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben