The Chromium Chronicle #33: View AnimationBuilder

व्यू में लेयर आधारित ऐनिमेशन का इस्तेमाल करने से, परफ़ॉर्मेंस बेहतर हो सकती है और पेज की परफ़ॉर्मेंस कम हो सकती है. हालांकि, इन्हें सेट अप करना काफ़ी मुश्किल होता है. AnimationBuilder क्लास से, जटिलता को काफ़ी कम किया जा सकता है. साथ ही, लेयर ऐनिमेशन को आसानी से पढ़ा जा सकता है.

मान लें कि आपको नीचे दिए गए दो व्यू, जैसे कि नीचे दी गई इमेज में, लगातार क्रॉस-फ़ेड को ऐनिमेट करना है.

यहां एक उदाहरण में बताया गया है कि सीधे लेयर ऐनिमेशन एपीआई का इस्तेमाल करके ऐसा कैसे किया जा सकता है.

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 पर ईमेल करें.