¿Es posible aplicar una animación de expansión o contracción para expandibleListView?Animación para expandibleListView
Respuesta
Se puede hacer utilizando un simple ListView que contiene una vista inicialmente oculta y una clase personalizada que amplía la animación. La idea básica es comenzar con View.GONE
y volver a dimensionar gradualmente el margen desde un valor negativo al tamaño requerido mientras se establece la visibilidad en View.VISIBLE
.
Ver:
- https://github.com/tjerkw/Android-SlideExpandableListView
- Android Animation: Hide/Show Menu
- How do I animate View.setVisibility(GONE)
..y finalmente
El último ejemplo contiene todo el código que necesita. Me parece un poco hackish, especialmente el hecho de que inicialmente debe establecer view.bottomMargin = -50
o más, de lo contrario la animación no funciona correctamente la primera vez, pero hasta ahora no encontré ninguna alternativa viable (aparte de utilizar un ScrollView con su propio artículos de contenedor en lugar de un ListView).
Y, por último, esta aplicación incluye el ejemplo anterior, entre muchos otros ejemplos útiles con enlaces a las fuentes:
Actualización: Google retira la aplicación desde la tienda de juego supuestamente por intelectual violación de la propiedad (aunque solo contenía demostraciones y enlaces a proyectos de código abierto), el autor ahora puso la aplicación disponible para descarga directa en http://goo.gl/ihcgs Para obtener más información, consulte https://plus.google.com/108176685096570584154/posts. NB: No estoy afiliado con el autor.
Gracias por el enlace de la aplicación ui patterns. – howettl
pero esto perderá todo el sentido de usar una vista de lista, ya que todos los elementos dentro del grupo (que expande) deben estar dentro de ella. si tienes muchos elementos allí, necesitarás tener muchas vistas para crear allí también ... –
@desarrollador Android: es mejor que utilices ScrollView, lo llenes con vistas y les apliques animaciones como necesario. Un ListView es un componente complejo que está optimizado para grandes listas; si solo tiene hasta una docena de elementos, una vista de desplazamiento podría ser más fácil de animar: haga su propio componente de bloque y anime las vistas dentro de él como desee. La principal desventaja en comparación con un ListView es que Android no creará/destruirá tus elementos a medida que se desplazan dentro y fuera del área de visualización, y que los contenedores no se volverán a usar, pero si tienes algunos artículos, no es un gran problema. . – ccpizza
He hecho un trabajo similar para una simple vista de lista. Para hacer eso superé el método getView y aplique la animación hacia arriba (o hacia abajo) en cada elemento de la lista. El grado de traducción fue decidido por la posición de la lista ít.
https://github.com/idunnololz/AnimatedExpandableListView/ –
He encontrado una solución posible (parcial) para este problema.
Lo primero que necesita para almacenar el estado de desplazamiento del ExpnadableListView:
@Override
public void onScrollStateChanged(final AbsListView view, final int scrollState) {
this.mScrollState = scrollState;
}
public int getScrollState() {
return this.mScrollState;
}
para la propia vista de lista, es necesario almacenar qué grupo se ha hecho clic, por lo que no harán más que animada sus hijos:
mListView.setOnGroupClickListener(...
@Override
public boolean onGroupClick(...){
mGroupPosition=groupPosition;
ahora, en el método getChildView(), comprobar el estado del movimiento en sentido vertical, y si está inactivo, se empieza la animación, por ejemplo:
public View getChildView(...) {
// <=prepare rootView and return it later
if (groupPosition==mGroupPosition&&getScrollState() == OnScrollListener.SCROLL_STATE_IDLE)
rootView.setAnimation(...)
esto configurará una animación para las vistas secundarias cada vez que expanda el grupo.
el inconveniente de esto son:
- sólo por las vistas secundarios desplegados. Tendrá que pensar en una lógica extra para animarlos al colapsar el grupo.
- todas las animaciones comienzan a la vez. necesitarás agregar múltiples animaciones una tras otra si deseas que funcione de otra manera.
Este es un enfoque interesante. Pero, por lo que he aprendido, los elementos * hijos * no son vistas * infantiles *, sino hermanos. Entonces, animas a todos los niños con animaciones separadas, o exactamente cómo lo haces ? Código de ejemplo de trabajo? – Nilzor
@Nilzor Lo he hecho hace mucho tiempo, y el requisito de animaciones se eliminó debido al poco tiempo que tuve que trabajar en él. Lo siento. –
No hay problema, gracias por volver a consultarme. Para cualquier otra persona, el problema aún no se ha resuelto, aunque siento que debería ser Google quien resuelva este problema si toman en serio las directrices de diseño de materiales – Nilzor
- 1. Android expandiblelistview no se activa enChildClick
- 2. Oyente de animación para la animación personalizada
- 3. android expandiblelistview no expande ni recibe eventos de clics
- 4. Animación para drawRect dibujos
- 5. Aprovechamiento de la animación principal para la animación en OpenGL
- 6. Android: dicha animación usando XML para la animación en Android
- 7. Voltear-Animación para Activity-Change
- 8. Animación principal Animación de máscara CALayer
- 9. Animación explícita de NSView usando animación central
- 10. Seguimiento de una animación de núcleo Animación
- 11. JqTouch - Detecta el disparador para la animación
- 12. Fórmula de animación principal para el movimiento
- 13. Usando fundido en animación para una vista
- 14. Bloquear la animación por defecto para startActivity
- 15. Animación de UIView para deslizar hacia abajo
- 16. Las mejores opciones para animación en THREE.JS
- 17. Animación personalizada para empujar un UIViewController
- 18. Animación personalizada de Android para ArcShape
- 19. Animación para añadir elementos DOM con jQuery
- 20. personalizada para Android con la animación
- 21. Animación inactiva tipo matriz para Emacs
- 22. Cómo preparar curva traducir animación para android?
- 23. jQuery animación detectar si la animación?
- 24. Android - El pulgar de fastscroll en expandiblelistview no despliega la lista correctamente
- 25. Animación Flipboard
- 26. Animación OpenGL
- 27. Cómo deshabilitar la animación para el código anidado en un bloque de animación UIView?
- 28. ¿Qué explica mejor la animación de animación CAPropertyAnimationWithKeyPath: parámetro?
- 29. La propiedad de animación CSS permanece después de la animación
- 30. No se puede tocar durante la animación (Animación de bloque)
No creo que sea posible hacer que la brecha entre las filas sea animada, aunque puse la animación de diapositiva izquierda/derecha en la vista que muestro cuando era niño. Esto solo funciona porque solo hay un solo hijo. – skorulis