Kann nicht herausfinden, wie man Fling mit ImageViewTouch haken kann

8

Ich benutze die Bibliothek ( Ссылка ), aber ich habe ein Problem damit, Fling zu verstehen. Ich habe die anderen Antworten gelesen, aber sie zeigen nicht den tatsächlichen Code, der verwendet wird, um Fling-Ereignisse zu erhalten.

Ich habe Fling-Events wie folgt angehängt:

%Vor%

MyGestureDetector erweitert SimpleOnGestureListener. Ich überschreibe dann die onFling-Methode.

Das Problem bei diesem Ansatz besteht darin, dass er die Touch- und damit die Schwenkfunktionalität deaktiviert. Ich bin mir sicher, dass es einen besseren Weg gibt, sich in Fling Events einzuklinken (damit ich Bilder ändern kann), aber ich bin mir nicht sicher wie -newb: (

Was ich suche, ist eine Möglichkeit, dies ähnlich zu anderen von ImageViewZoom bereitgestellten Hooks zu haken. So:

%Vor%     
JustLearningAgain 24.07.2014, 23:25
quelle

2 Antworten

9

Hinweis: Ich habe das selbst nicht getestet / codiert, daher funktioniert es möglicherweise nicht sofort.

Ich habe den Quellcode für ImageViewTouch überprüft - er verwendet intern SimpleOnGestureListener , um verschiedene gestenbasierte Funktionen (einschließlich Einfach- und Doppeltipp-Hooks) bereitzustellen. It stellt keinen Rückruf für das Flingereignis bereit. Also müssen Sie das selbst programmieren. Beginnen Sie mit der Definition einer neuen Schnittstelle, sagen wir OnImageViewTouchFlingEventListener innerhalb von / außerhalb von ImageViewTouch.java . Zum Beispiel - definiere es nach der Zeile 320 von ImageViewTouch.java :

%Vor%

Fügen Sie als nächstes ein Mitglied nach Zeile 31 zu ImageViewTouch.java hinzu:

%Vor%

Fügen Sie eine öffentliche Methode hinzu, um mFlingEventListener nach Zeile 64 zu initialisieren:

%Vor%

Zeile 261 von ImageViewTouch.java : Die Methode onFling(.....) definiert, wie das ImageView auf Schleuderereignisse reagiert. Prüfen Sie zunächst, ob Sie mit der aktuellen Funktionalität einverstanden sind. Sie haben beispielsweise erwähnt, dass das Flingereignis Bilder ändern soll. Wenn Sie sich Zeile 266 ansehen, wird das Flingereignis nichts tun, wenn der aktuelle Maßstab 1 ist - es gibt einfach false zurück.

Wie sich das ImageView auf eine Affäre auswirkt (und unter welchen Umständen), müssen Sie entscheiden. Nehmen wir an, Sie entscheiden, dass der Fling die Bilder nur dann verändert, wenn die Skala one ist - andernfalls schwenkt er. Dann sollte die folgende Änderung in Zeile 266 funktionieren:

%Vor%

Wenn Sie in Ihrem Code OnTouchListener auf ImageViewTouch festlegen, werden alle Touch-Funktionen übernommen, die von der internen TouchView- / Gestenbehandlung von ImageViewTouch geboten werden - daher keine Callbacks mit einmaligem / doppeltem Antippen. Aus diesem Grund können Sie den Aufruf von Flingereignissen nicht außerhalb von ImageViewTouch.java implementieren. Nun, Sie können - aber dann müssen Sie auch alle anderen Gesten implementieren.

Änderungen an Ihrem Aktivitätscode:

Das Mitglied mFlingEventListener muss initialisiert werden:

%Vor%     
Vikram 31.07.2014, 20:54
quelle
0

Es ist vielleicht nicht die Antwort, die Sie suchen, aber ich werde es versuchen. Wenn Sie nicht verpflichtet sind, die Bibliothek zu verwenden, die Sie gerade verwenden, möchte ich diese Bibliothek empfehlen, die die beste zoombare Bildansichtslösung darstellt Ich habe es bisher entdeckt. Es hat folgende Eigenschaften:

  

Funktionen

     
  • Out-of-the-Box-Zoomen mit Multi-Touch und Doppeltippen.
  •   
  • Scrollen mit fließendem Scrolling.
  •   
  • Funktioniert perfekt bei der Verwendung in einem übergeordneten Bildlaufelement (z. B. ViewPager).
  •   
  • Ermöglicht der Anwendung, benachrichtigt zu werden, wenn sich die angezeigte Matrix geändert hat. Nützlich für, wenn Sie Ihr UI aktualisieren müssen, das auf dem
    basiert   aktuelle Zoom / Scroll-Position.
  •   
  • Ermöglicht der Anwendung, benachrichtigt zu werden, wenn der Benutzer auf das Foto klickt.
  •   
    
Ercan 05.08.2014 08:27
quelle

Tags und Links