En iOS, existe una instalación muy fácil y poderosa para animar la adición y eliminación de filas UITableView, aquí hay un clip de un video de YouTube que muestra la animación predeterminada. Observe cómo las filas circundantes colapsan en la fila eliminada. Esta animación ayuda a los usuarios a realizar un seguimiento de lo que cambió en una lista y en qué parte de la lista estaban mirando cuando cambiaron los datos.
Desde que desarrollé en Android, no encontré ninguna instalación equivalente para animar filas individuales en un TableView . Llamar notifyDataSetChanged()
a mi adaptador hace que ListView actualice inmediatamente su contenido con nueva información. Me gustaría mostrar una animación simple de una nueva fila empujando o deslizándose cuando los datos cambian, pero no puedo encontrar ninguna forma documentada de hacerlo. Parece que LayoutAnimationController podría tener una clave para que esto funcione, pero cuando configuro un LayoutAnimationController en mi ListView (similar a LayoutAnimation2 de ApiDemo ) y elimino elementos de mi adaptador después de que la lista se haya mostrado, los elementos desaparecen inmediatamente en lugar de animarse. .
También he intentado cosas como las siguientes para animar un elemento individual cuando se elimina:
@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);
}
Sin embargo, las filas que rodean la fila animada no se mueven de posición hasta que saltan a sus nuevas posiciones cuando notifyDataSetChanged()
se llama. Parece que ListView no actualiza su diseño una vez que se han colocado sus elementos.
Si bien escribir mi propia implementación / bifurcación de ListView me ha pasado por la mente, esto parece algo que no debería ser tan difícil.
¡Gracias!