Android – AnimatorSet, animador de objetos – cadena de animación de rebote está amalgamando?
Tengo una pregunta sobre ObjectAnimator en Android. Estoy tratando de modelar un efecto Bounce por el cual la Vista se desliza hacia arriba (decreciente valor Y) y retrocede después por la misma cantidad 'n', seguido por la Vista deslizándose hacia arriba y hacia abajo de nuevo, pero esta vez por 'n / 2' Mitad de la distancia).
Por lo tanto, un rebote más grande, seguido por un rebote más superficial – es decir, la cosa que un icono de Mac hace en la bandeja cuando quiere su atención.
- Infinite ObjectAnimator con interpolador ... ¿Cómo acelerar sólo el inicio inicial?
- En android, ¿cómo hacer que una imagen crezca desde un punto usando animación?
- ¿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?
- Animación flotante suave con traducción en XML
- ¿Cuál es la forma correcta de animar una vista de una coordenada a otra?
Esto es lo que he probado hasta ahora (asuma que v
es una View
):
float y = v.getTranslationY(),distance = 20F; AnimatorSet s = new AnimatorSet(); s.play(ObjectAnimator.ofFloat(v, "translationY", y- distance).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y- (distance/2)).setDuration(500)) .before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500)); s.start();
Ignorar la calidad del código, es un POC! Esperaba que esto funcionara, pero parece que sólo 'rebotar' una vez como si su combinado las animaciones a pesar del uso de .before()
.
¿Podría mostrarme cómo puedo crear cadenas complejas de AnimatorSet que no se unen a una, ya que parece que me falta algo?
BONUS: Para obtener más puntos, ¿cómo puedo configurar la repetición de un AnimatorSet?
¡Muchas gracias!
- ViewFlipper tiene un retraso "enorme"
- Android animateLayoutChanges y flicker anclado fab
- Fragmentos anidados animados de Android
- ¿Cómo hacer la animación usando archivos xml en android?
- Ver para salir de la izquierda y entrar desde la derecha
- Vista web de Android con GSAP: intenta eliminar la referencia local que no sea JNI,
- ¿Cómo hacer la escritura de texto de animación?
- Iniciar múltiples ViewPropertyAnimators al mismo tiempo
Aceptar así que finalmente encontró una manera bastante ordenada para lograr la animación secuencial haciendo caso omiso del constructor fluido, y sólo con el método playSequentially()
tal que:
AnimatorSet as = new AnimatorSet(); as.playSequentially(ObjectAnimator.ofFloat(...), // anim 1 ObjectAnimator.ofFloat(...), // anim 2 ObjectAnimator.ofFloat(...), // anim 3 ObjectAnimator.ofFloat(...)); // anim 4 as.setDuration(600); as.start();
Aún no han funcionado repetir, sin embargo, que no sea un hack sucio que implica la devolución de llamada onAnimationEnd en un oyente. Debe ser una manera más simple, así que tal vez alguien puede editar esto cuando saben de uno.
De todos modos, espero que lo anterior ayuda a alguien.
Cuando utiliza el Generador, todas las dependencias que regresan se refieren al primer Animador, por lo que tuvo 3 rebotes que suceden simultáneamente después del primer movimiento. Desafortunadamente, parece que AnimatorSet está roto en algunos aspectos, uno de ellos se repite: https://code.google.com/p/android/issues/detail?id=17662
- Aplicación multi-pantalla para Android
- Ciclo de vida de la base de datos Sqlite? ¿Se elimina cuando se cierra la aplicación?