Smooth desplazamiento recyclerview android
Tengo un Recyclerview
que contiene la ratingbar
de ratingbar
en list_items.xml
al finalizar la clasificación de un elemento en Recyclerview
me desplazo a otro ítem de Recyclerview
automáticamente
- RecyclerView no se desplaza como se esperaba
- Personalizar RecyclerView LayoutManager no fling (sin problemas)
- Android: smoothScrollToPosition () no funciona correctamente
- Mejora de la suavidad de desplazamiento en un ListView de Android
- RecyclerView dentro de CoordinatorLayout, AppBarLayout Asunto de desplazamiento
El desplazamiento es muy rápido, el usuario no puede saber que se desplaza.
He implementado el desplazamiento suave, pero no funciona correctamente, el primer desplazamiento del segundo elemento es suave (el primero ya se muestra), pero los otros elementos se desplazan rápidamente
LinearLayoutSmoothScroll.java
public class LinearLayoutSmoothScroll extends LinearLayoutManager { private static final float MILLISECONDS_PER_INCH = 100f; private Context mContext; public LinearLayoutSmoothScroll(Context context) { super(context); mContext=context; } public LinearLayoutSmoothScroll(Context context, int orientation, boolean reverseLayout) { super(context, orientation, reverseLayout); mContext=context; } public LinearLayoutSmoothScroll(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); mContext=context; } @Override public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, final int position) { LinearSmoothScroller smoothScroller = new LinearSmoothScroller(mContext) { //This controls the direction in which smoothScroll looks //for your view @Override public PointF computeScrollVectorForPosition (int targetPosition) { return LinearLayoutSmoothScroll.this .computeScrollVectorForPosition(targetPosition); } //This returns the milliseconds it takes to //scroll one pixel. @Override protected float calculateSpeedPerPixel (DisplayMetrics displayMetrics) { return MILLISECONDS_PER_INCH/displayMetrics.densityDpi; } }; smoothScroller.setTargetPosition(position); startSmoothScroll(smoothScroller); } }
uso
layoutManager.smoothScrollToPosition(rvSurvey,new RecyclerView.State(),new_position);