¿Cómo iniciar la animación de Android desde los valores donde se detuvo?

Tengo una vista de la imagen en la cual aplico una animación de la rotación. La animación funciona bien. Al tocar hacia abajo, intento detener la animación de rotación usando cancel (), restableciendo la animación usando reset () y borrando la animación en la vista usando clearAnimation (). Pero la animación vuelve a la posición original. ¿Cómo detener la animación con los valores que era cuando sucede el evento táctil y reiniciar desde donde se detuvo?

Mi animación se define en el xml como se muestra a continuación

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="360" android:toDegrees="0" android:pivotX="50%" android:pivotY="50%" android:fillAfter="true" android:fillEnabled="true" android:duration="200000" android:repeatMode="restart" android:repeatCount="infinite" android:interpolator="@android:anim/linear_interpolator"/> 

Estoy intentando parar la animación usando el código siguiente

 private void stopAnimation(){ mRotateAntiClockwiseAnimation.cancel(); mRotateAntiClockwiseAnimation.reset(); imageView.clearAnimation(); mRotateAntiClockwiseAnimator.end(); mRotateAntiClockwiseAnimator.cancel(); stopAnimationForImageButton(); } 

Estoy configurando la animación en mi vista usando el siguiente código

 mRotateAntiClockwiseAnimation = AnimationUtils.loadAnimation(context, R.anim.rotate_anticlockwise); mRotateAntiClockwiseAnimation.setFillEnabled(true); mRotateAntiClockwiseAnimation.setFillAfter(true); imageView.setAnimation(mRotateAntiClockwiseAnimation); mRotateAntiClockwiseAnimation.startNow(); imageView.invalidate(); 

Como u ver, incluso utilizando cancel () o reset () no ayudó a detener la animación en el punto donde fue tocado hacia abajo. Cualquier puntero podría ayudar

Creo que lo conseguí trabajando iniciando el animador y luego estableciendo el currentPlayTime (). La documentación claramente dice (que acabo de tropezar con) que si la animación no ha sido iniciado, el juego de currentPlayTime utilizando este método no avanzará el delantero!

Establece la posición de la animación en el punto especificado en el tiempo. Este tiempo debe estar entre 0 y la duración total de la animación, incluyendo cualquier repetición. Si la animación aún no se ha iniciado, entonces no avanzará después de que se establezca en este momento; Simplemente ajustará el tiempo a este valor y realizará las acciones apropiadas basadas en ese tiempo. Si la animación ya se está ejecutando, entonces setCurrentPlayTime () ajustará el tiempo de reproducción actual a este valor y continuará jugando desde ese punto. http://developer.android.com/reference/android/animation/ValueAnimator.html#setCurrentPlayTime(long)

  private void stopAnimation(){ mCurrentPlayTime = mRotateAntiClockwiseAnimator.getCurrentPlayTime(); mRotateAntiClockwiseAnimator.cancel(); } private void startAnimation() { mRotateAntiClockwiseAnimator.start(); mRotateAntiClockwiseAnimator.setCurrentPlayTime(mCurrentPlayTime); } 

La función de pausa se ha añadido en el nivel API 19. Aquí puede leer cómo implementarlo. Este método utiliza ObjectAnimator que no es mucho más complicado que la clase de animación usual que usas. Sin embargo, hay otro truco alternativo que puede ser útil.
Con los mejores deseos.

  • ¿Cómo se puede utilizar un marcador de posición de carga que es un spinner animado con cargadores de imágenes como Glide, Picasso etc?
  • SetRotationY () width API10 en Android
  • Cómo configurar el oyente de onclick para ver imágenes animadas
  • Cambiar la duración de la animación ViewPager al deslizar de forma programática
  • Animar un fragmento de diálogo sobre descartar
  • Cómo hacer que el efecto de cambio de página en Android?
  • Sacudidas de animación en el dispositivo android en titanio
  • Cómo animar una versión 'clonada', duplicada de Android existente View
  • Animar ciertos elementos ListView
  • Animate listView childs sólo una vez que aparecen
  • Animación de la actividad de capa deslizante android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.