El uso de animaciones basadas en capas en Views puede mejorar el rendimiento y reducir
pero son bastante difíciles de configurar. El
AnimationBuilder
pueden reducir en gran medida la complejidad y mejorar la legibilidad de las capas
animaciones.
Supongamos que necesitas animar un encadenado continuo entre los siguientes dos: como se muestra en la siguiente imagen.
Este es un ejemplo de cómo podría hacerse esto usando directamente las APIs de LayerAnimation.
auto primary_title_sequence = std::make_unique<LayerAnimationSequence>();
auto working_sequence = std::make_unique<LayerAnimationSequence>();
primary_title_sequence->set_is_repeating(true);
working_sequence->set_is_repeating(true);
primary_title_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
primary_title_sequence->AddElement(CreateOpacityElement(0.0f, base::Seconds(1)));
primary_title_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
primary_title_sequence->AddElement(CreateOpacityElement(1.0f, base::Seconds(1)));
working_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
working_sequence->AddElement(CreateOpacityElement(1.0f, base::Seconds(1)));
working_sequence->AddElement(CreatePauseElement(OPACITY, base::Seconds(2)));
working_sequence->AddElement(CreateOpacityElement(0.0f, base::Seconds(1)));
primary_title_->layer()->GetAnimator()->StartAnimation(primary_title_sequence.release());
working_->layer()->GetAnimator()->StartAnimation(working_sequence.release());
A continuación, se muestra cómo crear el mismo efecto con AnimationBuilder
.
La animación comienza cuando sales del alcance.
AnimationBuilder()
.Repeatedly()
.Offset(base::Seconds(2))
.SetDuration(base::Seconds(1))
.SetOpacity(primary_title_, 0.0f)
.SetOpacity(working_, 1.0f)
.Offset(base::Seconds(2))
.SetDuration(base::Seconds(1))
.SetOpacity(primary_title_, 1.0f)
.SetOpacity(working_, 0.0f);
¿Qué código preferirías escribir o leer? Más importante aún, AnimationBuilder
no agrega sobrecarga adicional a la animación, ya que está diseñada para simplificar la
la creación de animaciones basadas en capas. Pruébala la próxima vez que necesites hacerlo
animar algo.
Para obtener ayuda adicional, envía un correo electrónico a chromium-dev@chromium.org.