Chromium Chronicle מס' 33: צפיות בסרט האנימציה

השימוש באנימציות מבוססות-שכבות ב-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.