Chromium Chronicle Nr. 33: Views AnimationBuilder

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.