Görünümlerde katman tabanlı animasyonlar kullanmak performansı artırabilir ve
ancak ayarlanmaları daha zordur. İlgili içeriği oluşturmak için kullanılan
AnimationBuilder
sınıfları, katmanın karmaşıklığını büyük ölçüde azaltabilir ve
animasyonları da ekler.
Aşağıdaki iki trafik kaynağı arasında sürekli bir çapraz geçiş animasyonu oluşturmanız gerektiğini (ör. aşağıdaki resimde olduğu gibi)
Bunun doğrudan katman animasyonu API'leri kullanılarak nasıl yapılabileceğine dair bir örneği aşağıda bulabilirsiniz.
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());
Aşağıda, aynı efektin AnimationBuilder
kullanılarak nasıl oluşturulacağı gösterilmektedir.
Kapsamdan çıkıldığında animasyon başlar.
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);
Hangi kodu yazmayı veya okumayı tercih ederdiniz? Daha da önemlisi, AnimationBuilder
sadeleştirmeyi amaçladığından animasyona fazladan
katman tabanlı animasyonların oluşturulması. Bir dahaki sefere deneyin
bir şeye animasyon eklemeliyiz.
Daha fazla yardım için e-posta chromium-dev@chromium.org adresine kaydedilir.