Chromium Chronicle #33: AnimationBuilder Görüntüleme

Görünümler'de katman tabanlı animasyonlar kullanmak performansı artırabilir ve ses kalitesini azaltabilir, ancak bunları ayarlamak zordur. AnimationBuilder sınıfları, karmaşıklığı önemli ölçüde azaltabilir ve katman animasyonlarının okunabilirliğini iyileştirebilir.

Aşağıdaki resimde olduğu gibi, sonraki iki görünüm arasında kesintisiz bir çapraz geçiş canlandırmanız gerektiğini varsayalım.

Bunun doğrudan katman animasyonu API'leri kullanılarak nasıl yapılabileceğine ilişkin bir örneği burada görebilirsiniz.

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, AnimationBuilder kullanarak aynı efekti nasıl oluşturabileceğiniz gösterilmektedir. Animasyon, kapsamdan çıkıldığında 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 edersiniz? Daha da önemlisi, AnimationBuilder, katman tabanlı animasyonların oluşturulmasını basitleştirmeyi amaçladığından animasyona fazladan ek yük getirmez. Bir dahaki sefere animasyon kullanmanız gerektiğinde deneyin.

Daha fazla yardım için chromium-dev@chromium.org adresine e-posta gönderin.