ক্রোমিয়াম ক্রনিকল #33: অ্যানিমেশন বিল্ডারকে দেখায়

ভিউ-এ লেয়ার ভিত্তিক অ্যানিমেশন ব্যবহার করলে কর্মক্ষমতা উন্নত হতে পারে এবং অযৌক্তিকতা কমাতে পারে, কিন্তু সেগুলি সেট আপ করা বেশ কঠিন। 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 ইমেল করুন।