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.