33 Chronicle Chromium: wyświetlenia AnimationBuilder

Użycie animacji opartych na warstwach w Zdjęciach może zwiększyć wydajność i zmniejszyć ale dość trudno je skonfigurować. AnimationBuilder mogą znacznie zmniejszyć złożoność i poprawić czytelność warstwy ani animacji.

Załóżmy, że musisz animować ciągłe przenikanie między 2 następującymi takich jak na ilustracji poniżej.

Oto przykład, jak można to zrobić bezpośrednio za pomocą interfejsów API animacji warstwy.

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());

Poniżej pokazujemy, jak uzyskać taki sam efekt za pomocą elementu AnimationBuilder. Animacja rozpoczyna się po opuszczeniu zakresu.

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);

Który kod wolisz napisać lub odczytać? Co ważniejsze, AnimationBuilder nie dodaje dodatkowego narzutu, ponieważ ma uprościć do tworzenia animacji opartych na warstwach. Spróbuj następnym razem nie animować czegoś.

Aby uzyskać dodatkową pomoc, wyślij e-maila na adres chromium-dev@chromium.org.