L'utilizzo di animazioni basate sui livelli nelle viste può migliorare le prestazioni e ridurre
ma sono piuttosto difficili da configurare. La
AnimationBuilder
le classi possono ridurre notevolmente la complessità e migliorare la leggibilità del livello
le animazioni.
Supponiamo di dover animare una dissolvenza incrociata continua tra le due seguenti come mostrato nell'immagine di seguito.
Ecco un esempio di come procedere utilizzando direttamente le API di animazione dei livelli.
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());
Di seguito viene mostrato come creare lo stesso effetto utilizzando AnimationBuilder
.
L'animazione inizia quando esci dall'ambito.
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);
Quale codice preferiresti scrivere o leggere? Ma soprattutto, AnimationBuilder
non aggiunge altro overhead all'animazione in quanto ha lo scopo di semplificare
creazione di animazioni basate su livelli. Fai un tentativo la prossima volta che ne hai bisogno
animare qualcosa.
Per ulteriore assistenza, invia un'email chromium-dev@chromium.org.