Die Verwendung von ebenenbasierten Animationen in Views kann die Leistung verbessern
und sind eher schwierig einzurichten. Die
AnimationBuilder
Klassen können die Komplexität erheblich reduzieren und die Lesbarkeit von Layern verbessern.
Animationen.
Angenommen, Sie müssen eine fortlaufende Überblendung zwischen den folgenden beiden Ansichten, wie in der folgenden Abbildung.
Hier ist ein Beispiel, wie dies direkt mit den APIs für die Ebenenanimation erreicht werden könnte.
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());
Nachfolgend wird gezeigt, wie Sie diesen Effekt mit AnimationBuilder
erzeugen.
Die Animation beginnt, nachdem Sie den Bereich verlassen haben.
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);
Welchen Code würden Sie lieber schreiben oder lesen? Und was noch wichtiger ist: AnimationBuilder
ohne zusätzlichen Aufwand zu generieren, da sie die
ebenenbasierten Animationen erstellen. Probier es einfach mal aus
etwas zu animieren.
Wenn du weitere Hilfe benötigst, sende eine E-Mail chromium-dev@chromium.org.