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/

  • Elementos en niveles múltiples ExpandableListView no siempre se puede hacer clic
  • Android ExpandableListView largo grupo haga clic en el oyente evitar la expansión
  • Lista de visualización de Android usando expandibleListView
  • Onfling y OnTouch no trabajan juntos
  • El divisor de Android ExpandableListView es invisible
  • Agregar animación a un ExpandableListView
  • Cómo llamar a notifyDataSetChanged para Custom ExpandableListView?
  • Implementar ListView expandible con adaptador personalizado
  • Depurando ExpandableListView de la base de datos - no funciona
  • Contraer todo el grupo excepto el grupo seleccionado en el listview expandible android
  • Clear ExpandableListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.