Menggunakan animasi berbasis lapisan di View dapat meningkatkan performa dan mengurangi
jank, tetapi sulit untuk disiapkan. Tujuan
AnimationBuilder
class ini dapat sangat mengurangi kompleksitas dan meningkatkan keterbacaan untuk lapisan
animasi.
Misalkan Anda perlu menganimasikan cross-fade berkelanjutan antara dua hal berikut khusus, seperti dalam gambar berikut.
Berikut adalah contoh cara melakukannya menggunakan API animasi lapisan secara langsung.
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());
Berikut ini cara membuat efek yang sama menggunakan AnimationBuilder
.
Animasi dimulai setelah keluar dari ruang lingkup.
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);
Kode mana yang lebih suka Anda tulis atau baca? Yang lebih penting, AnimationBuilder
tidak menambahkan overhead tambahan ke animasi karena dimaksudkan untuk menyederhanakan
pembuatan animasi berbasis lapisan. Cobalah di lain waktu Anda
menganimasikan sesuatu.
Untuk bantuan tambahan, kirim email chromium-dev@chromium.org.