In iOS gibt es eine sehr einfache und leistungsstarke Funktion zum Animieren des Hinzufügens und Entfernens von UITableView-Zeilen. Hier ist ein Clip aus einem Youtube-Video, das die Standardanimation zeigt. Beachten Sie, wie die umgebenden Zeilen auf die gelöschte Zeile fallen. Diese Animation hilft Benutzern zu verfolgen, was sich in einer Liste geändert hat und wo in der Liste sie sich angesehen haben, als sich die Daten geändert haben.
Seit ich auf Android entwickelt habe, habe ich keine gleichwertige Möglichkeit gefunden, einzelne Zeilen in einer TableView zu animieren . Der Aufruf notifyDataSetChanged()
auf meinem Adapter bewirkt , dass der Listview sofort seinen Inhalt mit neuen Informationen zu aktualisieren. Ich möchte eine einfache Animation einer neuen Zeile zeigen, die sich ein- oder ausschiebt, wenn sich die Daten ändern, aber ich kann keinen dokumentierten Weg finden, dies zu tun. Es sieht so aus, als ob LayoutAnimationController einen Schlüssel enthält, um dies zum Laufen zu bringen, aber wenn ich einen LayoutAnimationController in meiner ListView einstelle (ähnlich wie LayoutAnimation2 von ApiDemo ) einstelle und Elemente aus meinem Adapter entferne, nachdem die Liste angezeigt wurde, verschwinden die Elemente sofort, anstatt animiert zu werden .
Ich habe auch Folgendes versucht, um ein einzelnes Element zu animieren, wenn es entfernt wird:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
Die die animierte Zeile umgebenden Zeilen verschieben jedoch ihre Position erst, wenn sie zu ihren neuen Positionen springen notifyDataSetChanged()
Aufruf . Es scheint, dass ListView sein Layout nicht aktualisiert, sobald seine Elemente platziert wurden.
Während mir das Schreiben meiner eigenen Implementierung / Fork von ListView in den Sinn gekommen ist, scheint dies etwas zu sein, das nicht so schwierig sein sollte.
Vielen Dank!