השימוש באנימציות מבוססות-שכבות ב-Views יכול לשפר את הביצועים ולהפחית את הסיכון
מיוחדים, אבל די קשה להגדיר אותם.
AnimationBuilder
יכולים להפחית משמעותית את המורכבות ולשפר את הקריאוּת של שכבות
אנימציות.
נניח שצריך ליצור אנימציה של עמעום הדרגתי מתמשך בין שני הגוונים הבאים כמו בתמונה הבאה.
הדוגמה הבאה ממחישה איך אפשר לעשות זאת באמצעות ישירות בממשקי ה-API של האנימציה בשכבה.
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());
בהמשך מוסבר איך ליצור את אותו אפקט באמצעות AnimationBuilder
.
האנימציה מתחילה לצאת מההיקף.
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);
איזה קוד היית רוצה לכתוב או לקרוא? ועוד יותר חשוב, AnimationBuilder
לא מוסיפה תקורה נוספת לאנימציה, כי היא נועדה לפשט את
יצירה של אנימציות מבוססות-שכבות. כדאי לנסות בפעם הבאה
להוסיף אנימציה למשהו.
לקבלת עזרה נוספת, אפשר לשלוח אימייל chromium-dev@chromium.org.