Wie Android 4.0 wie Swipe implementieren, um Funktionalität in ListView zu verwerfen?

8

Ich arbeite an einer App, in der ich Swipe-to-Find-Funktionalität in der ListView implementieren möchte - ähnlich wie in der Android-4.0-Benachrichtigungsleiste, der Liste der zuletzt verwendeten Apps oder den Browser-Tabs. Ich möchte die App auf Geräten mit Android 2.2 und höher ausführen. Siehe das folgende Bild. Ich möchte auch die Transparenz des Artikels, der weggeschoben wird, ändern - genau wie in ICS.

Android 4.0-Webbrowser - Wischen Sie die geöffneten Registerkarten weg http://img19.imageshack.us/img19/3605 /screenshot2012022617290.png

Ich habe die Quelle des ICS-Webbrowsers unter Ссылка , konnte aber nicht herausfinden, welche Klasse für die Implementierung dieser Funktionalität besonders verantwortlich ist.

Kann mir hier jemand in die richtige Richtung zeigen? Können wir dies mithilfe der Android Compatibility Library tun? Lass es mich wissen, bitte. Vielen Dank.

    
iamronak 26.02.2012, 12:19
quelle

2 Antworten

0

Ich weiß, das ist eine ziemlich alte Frage, aber für jeden, der noch danach sucht, könnt ihr die Bibliothek von Roman Nurik hier ansehen: Ссылка

Hier wird gezeigt, wie das erforderliche Verhalten für die Listenansicht und für normale Ansichten erstellt wird.

    
Kiran Parmar 26.06.2015, 04:35
quelle
3

Ich habe darüber nachgedacht, eine solche Funktion ebenfalls zu implementieren, aber ich habe es noch nicht getan. Das einzige, was ich anbieten kann, sind einige Ideen, wie ich dieses Problem angehen würde. Wenn ich irgendwann Code geschrieben habe, werde ich es hier veröffentlichen.

  1. Die Hauptklasse, die benötigt wird, ist ein benutzerdefinierter Adapter, der ein ListAdapter (ArrayAdapter, SimpleCursorAdapter etc.) erweitert.
  2. Der Adapter wendet einen View.OnTouchListener auf alle Ansichten an.
  3. Immer wenn dieser Listener einen horizontalen Bildlauf dx erkennt, ruft er concernedView.offsetLeftAndRight(dx) auf (was die Ansicht ziehbar macht). Natürlich muss der Adapter den aktuellen horizontalen Offset für die Ansicht speichern. Wenn der Benutzer eine Ansicht zieht und seinen Finger vom Bildschirm entfernt, erkennt der TouchListener dies ebenfalls und startet eine Folie zurück. Mit dem aktuellen Offset können wir auch einen Alpha-Wert berechnen, so dass die Ansicht ausgeblendet wird, wenn sie sich den Bildschirmrändern nähert.
  4. Wenn ein Listeneintrag vom Benutzer schließlich abgelehnt wird, wird es etwas knifflig, und ich bin mir immer noch nicht sicher, wie ich die folgende Aktion implementieren würde: Der Listeninhalt muss aktualisiert werden (oder der Adapter muss den Entlassungen) und die Ansichten, die unter der entlassenen waren, müssen nach oben zeigen, um die Lücke zu schließen. Ich denke, es könnte funktionieren, den ListView den neuen Inhalt laden zu lassen, aber das würde sofort die Lücke füllen. Um das zu vermeiden, würde ich dann eine Animation starten, die alle betroffenen Ansichten von ihrer alten Position (wo wir noch die Lücke hatten) zu ihrer aktuellen Position (wo die Lücke gefüllt ist) schwebt.

Dies sind nur einige meiner Gedanken zu dem Thema, die einigen Leuten helfen könnten, mit der Arbeit an dem Problem zu beginnen. Wie ich schon sagte, werde ich das wahrscheinlich irgendwann in der Zukunft implementieren und natürlich werde ich den Code hier veröffentlichen.
Ich würde mich über jede Rückmeldung in den Kommentaren freuen, aber ich möchte nicht jeden einzelnen Aspekt meiner Idee erklären, der mich zu viel Zeit kosten würde;)

    
m1ntf4n 26.02.2012 18:05
quelle