Determinar la vista que aparece en LayoutManager pre-layout

Quiero apoyar las animaciones predictivas en mi LayoutManager personalizado cuando el elemento se mueve desde fuera de los límites de la pantalla visible hasta el punto visible.

Todas las operaciones de llenado que hago en el onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) .

De acuerdo con una documentación para apoyar las animaciones predictivas en la etapa de pre-diseño ( state.isPreLayout() ) i debe establecer las condiciones iniciales para la animación de cambio (por ejemplo, lugar que aparecen vistas en algún lugar)

El problema es que no puedo encontrar una manera de determinar en el pre-diseño que las vistas se van a mover desde fuera, porque soy capaz de operar sólo con corriente adjunta a RecyclerView vistas y onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount) se llama después de la fase de pre-diseño. (Por ejemplo onItemsRemoved se llama antes de pre-layout)

¿Es el error con LayoutManager o podría de alguna manera determinar en el pre-diseño que las vistas se van a mover pronto?

PS: soy capaz de mantener la animación de predicción de punto visible a fuera, porque soy capaz de bucle a través de vistas visibles y determinar con recycler.convertPreLayoutPositionToPostLayout cuáles van a ser movidos.

 //childViews is an iterable over RecyclerView items for (View view : childViews) { RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) view.getLayoutParams(); boolean probablyMovedFromScreen = false; if (!lp.isItemRemoved()) { //view won't be removed, but maybe it is moved offscreen int pos = lp.getViewLayoutPosition(); //start view is a first visible view on screen int lowestPosition = getPosition(startView); int highestPosition = getPosition(endView); pos = recycler.convertPreLayoutPositionToPostLayout(pos); probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition; } if (probablyMovedFromScreen) { //okay this view is going to be moved } } 

Este artículo me ha ayudado mucho, pero tampoco describe una animación que necesito.

PPS: LinearLayoutManager no admite dicha animación también. (Solo hay una simple animación de desvanecimiento)

One Solution collect form web for “Determinar la vista que aparece en LayoutManager pre-layout”

No sabes qué elementos estarán visibles, pero sabes qué elementos desaparecerán (o cambiarán) de manera que basándote en eso, puedes estimar cuánto espacio es necesario en qué dirección. Puede comprobar el código de LinearLayoutManager para ver cómo funciona. También puede leer estos artículos acerca de los detalles del sistema RecyclerView.

http://www.birbit.com/recyclerview-animations-part-1-how-animations-work http://www.birbit.com/recyclerview-animations-part-2-behind-the-scenes

  • v7 RecyclerView NullPointerException AccessibilityDelegateCompat.getBridge ()
  • ¿Cómo aplicar setItemChecked (position, true) con RecyclerView en Android?
  • Cómo rellenar la imagen dentro de ImageView por la costumbre de la izquierda y la coordenada superior | Androide
  • La fila de RecyclerView está barajando y cambiando Imágenes: android
  • Crear un RecyclerView con desplazamiento horizontal y vertical
  • Error: El hijo especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero
  • Problema de desplazamiento Infinito Infinito de RecyclerView
  • Paginación de Firebase android
  • Desplazar SwipeRefreshLayout con RecyclerView Actualizar en cualquier lugar de android 2.2
  • Inicio de DialogFragment desde una clase que se extiende RecyclerView.ViewHolder
  • onclicklistener en el elemento específico de la recyclerview en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.