Animar a los niños de una lista expandible cuando se colapsan / expanden

Estoy intentando animar las vistas de mi hijo en una lista expandible. Me gustaría que la vista del niño se deslice hacia abajo de arriba a abajo al expandir un grupo y deslizarse de abajo hacia arriba al colapsar un grupo. He mirado varios métodos (animando el viewgroup o las vistas del niño) pero ninguno parece trabajar muy bien o no lo estoy haciendo derecho.

He extendido una clase de BaseExpandableListAdapter para crear mi propio adaptador personalizado. También tengo vistas de encargo (xml) para los grupos / childs que hincho en los métodos getChildView y getGroupView.

Sólo me gustaría que el actual grupo colapsado / expandido para animar a su hijo. ¿Puede alguien señalarme en la dirección correcta? ¡Si usted necesita más información o código déjeme por favor saber!

Saludos, Ivo

Así que lo que he hecho es usar un listview regular y luego animar las vistas de fila cuando se hace clic.

Yo uso este methode para la animación: Android animar gota abajo / vista arriba adecuada

Puede ser un poco complicado si la altura para la vista que se deja caer es wrap_content, para este problema tuve que encontrar y establecer la altura antes de iniciar 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 del inicio de la animación y luego se hace visible cuando se inicia la animación.

Edit: He hecho un ejemplo completo aquí .

Puede agregar animación a cada vista secundaria en el método bindChildView. Con el fin de animar sólo el niño del grupo actual – sólo tienes que coger el evento onExpand, leer sus childs, guardar los ids en algún array, y en el bindChildView – animar sólo los childs guardados en ese array.

Otra solución es usar la biblioteca Android-SlideExpandableListView que escribí: https://github.com/tjerkw/Android-SlideExpandableListView

Se basa en las ideas de Udinic y otros.

Más sobre esto se puede leer en esta entrada del blog: http://tjerktech.wordpress.com/2012/06/23/an-emerging-android-ui-pattern-for-contextual-actions/

  • Recuperar ChildItem de ExpandableListView?
  • Android expandablelistview no se expande ni recibe eventos de clic
  • ¿Cómo mantener abierto el ExpandableListView?
  • Onfling y OnTouch no trabajan juntos
  • Después de mantener el estado de colapso / expansión para nivel N o Multinivel lista ampliable algunos subgrupos no se muestran
  • ¿Cómo agregar la imagen en lista extensible en padre en androide?
  • ExpandableListView groupView checkbox unticking otras vistas de grupo
  • Expandible listview setselectionfromTop con animación y relleno
  • Expandir elemento ListView con animación
  • ExpandableListView dentro de ExpandableListView
  • EnhancedListView con ExpandableListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.