Tengo una vista de desplazamiento. Realicé smooth-scroll.utilizando smoothScrollBy(). Todo funciona bien, pero quiero cambiar la duración del desplazamiento suave. El desplazamiento suave ocurre muy rápido y el usuario no está entendiendo lo que sucedió. ¿Me ayuda a reducir la velocidad de desplazamiento suave?Reducir la velocidad del desplazamiento suave en la vista de desplazamiento
Respuesta
Aquí es una solución con un temporizador que utiliza scrollTo pero también se puede utilizar scrollBy Android: HorizontalScrollView smoothScroll animation time
whichScreen = Math.max(0, Math.min(whichScreen, getBase().getDocumentModel().getPageCount()-1));
mNextScreen = whichScreen;
final int newX = whichScreen * getWidth();
final int delta = newX - getScrollX();
//scroller.startScroll(getScrollX(), 0, delta, 0, Math.abs(delta) * 2);
scroller.startScroll(getScrollX(), 0, delta, 0, Math.abs(delta));
invalidate();
Pruebe el siguiente código:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
ValueAnimator realSmoothScrollAnimation =
ValueAnimator.ofInt(parentScrollView.getScrollY(), targetScrollY);
realSmoothScrollAnimation.setDuration(500);
realSmoothScrollAnimation.addUpdateListener(new AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
int scrollTo = (Integer) animation.getAnimatedValue();
parentScrollView.scrollTo(0, scrollTo);
}
});
realSmoothScrollAnimation.start();
}
else
{
parentScrollView.smoothScrollTo(0, targetScrollY);
}
Ésta es la forma en que he logrado un desplazamiento vertical suave (como créditos de películas). Esto también le permite al usuario mover el scroll hacia arriba y hacia abajo y le permite continuar desplazándose cuando lo suelta. En mi XML, encapsulé mi TextView dentro de ScrollView llamado "scrollView1". ¡Disfrutar!
final TextView tv=(TextView)findViewById(R.id.lyrics);
final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView1);
Button start = (Button) findViewById(R.id.button_start);
Button stop = (Button) findViewById(R.id.button_stop);
final Handler timerHandler = new Handler();
final Runnable timerRunnable = new Runnable() {
@Override
public void run() {
scrollView.smoothScrollBy(0,5); // 5 is how many pixels you want it to scroll vertically by
timerHandler.postDelayed(this, 10); // 10 is how many milliseconds you want this thread to run
}
};
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timerHandler.postDelayed(timerRunnable, 0);
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timerHandler.removeCallbacks(timerRunnable);
}
});
¿Cómo sabré que el desplazamiento llegó al final y el ejecutable debe estar apagado? ¿Cómo manejar esto? – AlexKost
La respuesta simple es sólo para reemplazar
scrollView.smoothScrollTo(0, scrollTo);
con
ObjectAnimator.ofInt(scrollView, "scrollY", scrollTo).setDuration(duration).start();
donde la duración es el tiempo en milisegundos que desea que se lleve
- 1. Desplazamiento vertical suave de la página con la rueda del mouse y la barra de desplazamiento
- 2. Emacs, desplazamiento suave, desplazamiento-margen y eshell
- 3. Vista de lista de Android ralentizar la velocidad de desplazamiento
- 4. UITableView rendimiento de desplazamiento suave
- 5. Android OpenGL ES, desplazamiento suave
- 6. desplazamiento automático suave utilizando javascript
- 7. desplazamiento suave para WPF DataGrid
- 8. mejor manera de mostrar la imagen en la vista de cuadrícula es el desplazamiento suave
- 9. Jquery, Jcarousel desplazamiento suave infinito
- 10. NSTextView, anexando texto y desplazamiento suave
- 11. desplazamiento suave/scroll inercial/impulso scroll
- 12. ListBox, VirtualizingStackPanel y desplazamiento suave en WPF
- 13. Detectar la velocidad de desplazamiento de GridView - Android
- 14. ¿Cómo aumentar la velocidad de desplazamiento lento en un JScrollPane?
- 15. ¿Cómo aumentar la velocidad de desplazamiento de UIWebView?
- 16. Mostrar vista en una vista de desplazamiento en la pantalla
- 17. vista de desplazamiento bidireccional
- 18. iPhone dev: ¿Aumenta la velocidad de desplazamiento en UIWebView?
- 19. se corrige para obtener un desplazamiento suave en emacs?
- 20. LinearLayout no rellena la vista de desplazamiento
- 21. Desplazamiento de la barra de desplazamiento del navegador
- 22. El desplazamiento suave no funciona en ViewPager (biblioteca de soporte)
- 23. Vista de desplazamiento horizontal en páginas de desplazamiento horizontal
- 24. Desplazamiento horizontal ¿Vista interior del elemento ListView?
- 25. ¿Cómo establecer la velocidad de desplazamiento de la rueda del mouse en IntelliJ?
- 26. ¿Cómo puedo acelerar la velocidad de desplazamiento en un JScrollPane cuando uso la rueda del mouse?
- 27. Desplazamiento a Treeviewitem seleccionado dentro de una vista de desplazamiento
- 28. Optimizaciones de vista de desplazamiento
- 29. ¿Es posible implementar desplazamiento suave en una vista de lista de WPF?
- 30. Desplazamiento de desplazamiento con GestureDetector onScroll
Esto se debe elegir como respuesta a la pregunta. +1 –
En lugar de utilizar ValueAnimator, ¿por qué no utilizar ObjectAnimator (una subclase de ValueAnimator)? Lo hace aún más fácil: un trazador de líneas, de hecho: ObjectAnimator.ofInt (scrollView, "scrollY", targetScrollY) .setDuration (500) .start(); –