android - Animar a los niños de una vista de lista desplegable al colapsar/expandir
animation expandablelistview (3)
Estoy tratando de animar las vistas de mi hijo en una vista de ampliación de lista. Me gustaría que la vista del niño se deslice hacia abajo de arriba a abajo cuando se expande un grupo y se deslice de abajo hacia arriba cuando se contrae un grupo. He visto varios métodos (animando el grupo de vista o el niño) pero ninguno parece funcionar muy bien o no lo estoy haciendo bien.
He extendido una clase de BaseExpandableListAdapter para crear mi propio adaptador personalizado. También tengo vistas personalizadas (xml) para los grupos / niños que inflo en los métodos getChildView y getGroupView.
Solo me gustaría que el grupo colapsado / expandido actual anime a su hijo. ¿Alguien puede señalarme en la dirección correcta? Si necesita más información o código, por favor hágamelo saber!
Saludos, Ivo
Entonces, lo que he hecho es usar una vista de lista regular y luego animar las vistas de fila cuando se hace clic.
Utilizo este método para la animación: animación animada de Android vista desplegable adecuada
Puede ser un poco complicado si la altura de la vista que se va a desplegar es wrap_content, para este problema tuve que buscar y establecer la altura antes de comenzar la animación:
public static void setHeightForWrapContent(Activity activity, View view) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(screenWidth, MeasureSpec.EXACTLY);
view.measure(widthMeasureSpec, heightMeasureSpec);
int height = view.getMeasuredHeight();
view.getLayoutParams().height = height;
}
La vista debe desaparecer antes de que comience la animación y luego hacerla visible cuando comience la animación.
Edit: hice un ejemplo completo here .
Otra solución es usar la biblioteca Android-SlideExpandableListView que escribí: https://github.com/tjerkw/Android-SlideExpandableListView
Se basa en ideas de Udinic y otros.
Se puede leer más acerca de esto en esta publicación del blog: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/
Puede agregar animación a cada vista secundaria en el método bindChildView. Para animar solo al elemento secundario del grupo actual: solo capte el evento onExpand, lea sus elementos secundarios, guarde los identificadores en alguna matriz y en bindChildView - anime solo los elementos secundarios guardados en esa matriz.