Holen Sie sich berühren position, während Sie ziehen
Habe ich einige Ansichten, die ich gerne ziehen um. Die Ansichten sind innerhalb
ein LinearLayout, welches sich in einem scrollview.
Möchte ich, um die position des aktuellen finger (touch), um
machen Sie eine glatte scrollen auf meinem scrollview, abhängig von der
Höhe des aktuellen ziehen.
Beginne ich meine draggin nach einem langen Klick mit der
Anzeigen erstellen-in-listener startDrag
view.startDrag(null, shadowBuilder, view, 0);
Ich bin auch in der Lage, um die relativ position des drag
die Ansicht, die derzeit schwebte durch
view.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
//get event positions
}
});
Aber das funktioniert nur für die anzeigen, wo die Schatten ziehen ist derzeit auf
und DragEvent stellt nur relative Positionen, nicht roh Positionen.
Was ich brauche, ist die position der finger, während das ziehen geschieht. Leider sind alle onTouchEvents bekommen verbraucht, während Sie den Mauszeiger ziehen.
Weiß jemand, wie bekomme ich diese zu arbeiten?
Ps: Ein Weg, der funktioniert (Art), die ich derzeit verwenden, ist die Berechnung der
position des touch über die dragEvent.relativePosition in Kombination
mit der view-position. Aber gibt es nicht einen besseren Weg zu gehen?
- Willkommen entwerfen Sie Ihre eigenen benutzerdefinierten Geste. Ich würde schauen Sie sich um, wie Menschen Gebärden. Dies ist ein Beispiel von einem Seitensprung stackoverflow.com/questions/4139288/... Oder man könnte das ja tun Ps: aber wenn Sie ziehen, etwas, das ein paar Ebenen tief in einem layout, das Sie tun müssen, wird eine kleine Berechnung, um die touch-position
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, da scheint es nicht zu sein, eine einfachere Antwort, die ich geben werde meine eigene relativ einfache Lösung für weitere Leser, Sie brauchen sich keine der gesten-Erkennung.
Zuerst müssen Sie die Ansicht erhält, dass die Veranstaltung ziehen und auf den zweiten die
drag-Ereignis ifself (oder zumindest die x-und y-Koordinaten).
Mit dem abrufen der anzeigen-position und einige einfache addition, Sie bekommen das
raw touch-position.
Diese Methode getestet, mit der zeigen-Zeiger-position Entwickler-Optionen
um die richtigen Daten.
Die Methode für die Berechnung sieht wie folgt aus:
Rufen Sie diese Methode innerhalb Ihrer onDragListener Umsetzung:
Kqemu:
Wenn Sie möchten, um zu bestimmten, ob der touch innerhalb einer bestimmten Sicht können Sie
etwas wie das hier tun:
Habe ich auch implementiert, die einen reibungslosen Bildlauf auf ein listview-Steuerelement basierend auf dieser Lösung.
SO dass die Benutzer können ziehen Sie ein Element aus einer Liste, und scrollen Sie in der Liste via ziehen Sie das Element nach oben oder unten in der Liste Ansicht.
Wenn jemand interessiert ist, ich kann ein weiterer link zu den
Umsetzung.
Cheers.