Las animaciones de elementos predictivos de RecyclerView no funcionan (APPEARING)
Tengo un RecyclerView con GridLayoutManager (soporte lib v7). Actualizar el adaptador y hacer notifyItemMoved. Si la posición de la fuente del elemento está en la pantalla y la posición de destino está en la pantalla también – "mover la animación" se reproduce. En caso de que el elemento estuviera en la posición fuera de la pantalla (posición 1000, o cualquier otro lejos de la ventana de visualización) y se trasladó a la ventana de visualización, aparecerá con "fade in animation".
Parece que las animaciones de elementos predictivos no funcionan a pesar de que en el hecho de que supportsPredictiveItemAnimations () devuelve true. ¿Estoy haciendo algo mal? ¿Debo anular algunos métodos para habilitarlo?
- Error: El atributo "theme" ya ha sido definido
- RecyclerView parpadea después de notifyDatasetChanged ()
- ¿Debo cambiar el Listview existente en mi aplicación a RecyclerView?
- (Smooth) ScrollToPosition no funciona correctamente con RecyclerView
- RecyclerView BackgroundColor
Yo estaba leyendo el código fuente de RecyclerView, y en javadoc del método dispatchLayout está escrito como:
- Las vistas de PERSISTENT se mueven ({@link ItemAnimator # animateMove (ViewHolder, int, int, int, int)})
- Las vistas REMOVED se eliminan ({@link ItemAnimator # animateRemove (ViewHolder)})
- Se agregan vistas agregadas ({@link ItemAnimator # animateAdd (ViewHolder)})
- Las vistas DESAPARECIDAS se alejan de la pantalla
- Las vistas COMPARTIDAS se mueven en la pantalla
Sin embargo, ItemAnimator no distingue ADDED y COMPARTIENDO. ¿Es posible fijar animaciones predictife o por lo menos hacer que la apariencia aparezca como "mover desde fuera de la animación de la pantalla" lefting ADDED animación como es?
- RecyclerView RecyclerViewDataObserver no estaba registrado
- Vista de reciclador - cambia el tamaño de la vista de elemento mientras se desplaza (para efecto de carrusel)
- RecyclerView con GridLayoutManager
- Eliminar un elemento de RecyclerView- Android
- Cuándo usar ListView en lugar de RecyclerView
- RecyclerView enfrenta pequeños problemas
- Mostrar datos SQLite en RecyclerView
- RecyclerView Adapter está repitiendo valores en lugares erróneos
Puede intentar anular getExtraLayoutSpace(RecyclerView.State state)
de LinearLayoutManager
para proporcionar al administrador espacio adicional para animaciones predictivas.
ejemplo:
@Override protected int getExtraLayoutSpace(RecyclerView.State state) { return getHeight(); // add extra page for better predictive animations }
El espacio adicional se añadirá al principio o al final dependiendo del delta de desplazamiento anterior de su vista de desplazamiento. Puedes echar un vistazo a la implementación de onLayoutChildren
de LinearLayoutManager
para más detalles.
- ¿Android JobScheduler o GCM JobScheduler persisten los trabajos después de una actualización de la aplicación?
- Android bluetooth obtener dispositivos conectados