studio simpleongesturelistener recognition android animation scroll drawing

android - simpleongesturelistener - Cómo animar la posición de desplazamiento? Cómo desplazarse sin problemas?



pinch to zoom android (4)

Consulte el código de ejemplo view_cache_demo para ver cómo hacer un desplazamiento animado. Funciona en 2D, dibuja complejos en caché y también maneja gestos de fling, pero puedes simplificar todo lo que sea necesario.

Deseo moverme suavemente a la siguiente posición de desplazamiento en mi vista personalizada (al presionar un botón o evento). ¿Cómo implementar esto? En primer lugar, no puedo ver la clase de animación de desplazamiento (solo alfa, rotar, escalar y traducir). En segundo lugar, al tener una clase de animación, no puedo ver la iterativa (por ejemplo, desplazar los derechos de 100 píxeles en cualquier posición que tengamos) solo absoluta (es decir, para animar de un valor constante a otro).


La animación del desplazamiento se realiza mediante una combinación de Scroller / OverScroller (para calcular los valores interpolados en el tiempo de sus desplazamientos de desplazamiento), GestureDetectors (para iniciar el objeto scroller) y el método onComputeScroll de View (que implícitamente es su ciclo de animación).

Los documentos oficiales de Android ahora tienen un tutorial detallado sobre precisamente este tema. http://developer.android.com/training/gestures/scroll.html



Usando ObjectAnimator, esta es una muestra para desplazarse hacia arriba:

public void scroolToTop() { int x = 0; int y = 0; ObjectAnimator xTranslate = ObjectAnimator.ofInt(mScrollView, "scrollX", x); ObjectAnimator yTranslate = ObjectAnimator.ofInt(mScrollView, "scrollY", y); AnimatorSet animators = new AnimatorSet(); animators.setDuration(1000L); animators.playTogether(xTranslate, yTranslate); animators.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator arg0) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animator arg0) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animator arg0) { // TODO Auto-generated method stub } @Override public void onAnimationCancel(Animator arg0) { // TODO Auto-generated method stub } }); animators.start(); }