অ্যানিমেশন পরিচিতি

রচনা পদ্ধতি চেষ্টা করুন
জেটপ্যাক কম্পোজ হল Android এর জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে অ্যানিমেশন কীভাবে ব্যবহার করবেন তা শিখুন।

অ্যানিমেশনগুলি চাক্ষুষ সংকেত যোগ করতে পারে যা ব্যবহারকারীদের আপনার অ্যাপে কী ঘটছে সে সম্পর্কে অবহিত করে। এগুলি বিশেষভাবে উপযোগী হয় যখন UI অবস্থা পরিবর্তন করে, যেমন যখন নতুন সামগ্রী লোড হয় বা নতুন ক্রিয়া উপলব্ধ হয়৷ অ্যানিমেশনগুলি আপনার অ্যাপে একটি পালিশ লুক যোগ করে, যা এটিকে একটি উচ্চ মানের চেহারা এবং অনুভূতি দেয়।

আপনি কি ধরনের অ্যানিমেশন চান তার উপর নির্ভর করে Android-এ বিভিন্ন অ্যানিমেশন API অন্তর্ভুক্ত থাকে। এই ডকুমেন্টেশনটি বিভিন্ন উপায়ে আপনি আপনার UI এ গতি যোগ করতে পারেন তার একটি ওভারভিউ প্রদান করে।

আপনার কখন অ্যানিমেশন ব্যবহার করা উচিত তা আরও ভালভাবে বোঝার জন্য, গতি সম্পর্কে মেটেরিয়াল ডিজাইন গাইডটিও দেখুন।

বিটম্যাপ অ্যানিমেট করুন

চিত্র 1. একটি অ্যানিমেটেড অঙ্কনযোগ্য।

একটি বিটম্যাপ গ্রাফিককে অ্যানিমেট করতে যেমন একটি আইকন বা চিত্রণ, অঙ্কনযোগ্য অ্যানিমেশন API ব্যবহার করুন। সাধারণত, এই অ্যানিমেশনগুলি একটি অঙ্কনযোগ্য সংস্থান দিয়ে স্ট্যাটিকভাবে সংজ্ঞায়িত করা হয়, তবে আপনি রানটাইমে অ্যানিমেশন আচরণও সংজ্ঞায়িত করতে পারেন।

উদাহরণস্বরূপ, দুটি ক্রিয়া সম্পর্কিত ব্যবহারকারীর সাথে যোগাযোগ করার একটি চমৎকার উপায় হল একটি প্লে বোতামকে অ্যানিমেট করা যা একটি বিরাম বোতামে রূপান্তরিত হয় যখন এটি ট্যাপ করা হয়।

আরও তথ্যের জন্য, অ্যানিমেট অঙ্কনযোগ্য গ্রাফিক্স পড়ুন।

UI দৃশ্যমানতা এবং গতি অ্যানিমেট করুন

চিত্র 2. একটি সূক্ষ্ম অ্যানিমেশন যখন একটি ডায়ালগ উপস্থিত হয় এবং অদৃশ্য হয়ে যায় তখন UI পরিবর্তন কম ঝাঁকুনি দেয়৷

যখন আপনার লেআউটে দৃশ্যমানতা বা দৃশ্যের অবস্থান পরিবর্তন করতে হবে, তখন ব্যবহারকারীকে কীভাবে UI পরিবর্তন হচ্ছে তা বুঝতে সাহায্য করার জন্য সূক্ষ্ম অ্যানিমেশন অন্তর্ভুক্ত করা ভাল।

বর্তমান লেআউটের মধ্যে দৃশ্যগুলি সরাতে, প্রকাশ করতে বা লুকানোর জন্য, আপনি android.animation প্যাকেজ দ্বারা প্রদত্ত সম্পত্তি অ্যানিমেশন সিস্টেম ব্যবহার করতে পারেন, যা Android 3.0 (API স্তর 11) এবং উচ্চতর সংস্করণে উপলব্ধ৷ এই APIগুলি নির্দিষ্ট সময়ের মধ্যে আপনার View অবজেক্টের বৈশিষ্ট্যগুলি আপডেট করে, বৈশিষ্ট্যগুলি পরিবর্তন হওয়ার সাথে সাথে অবিচ্ছিন্নভাবে ভিউটি পুনরায় অঙ্কন করে। উদাহরণস্বরূপ, যখন আপনি অবস্থানের বৈশিষ্ট্যগুলি পরিবর্তন করেন, তখন দৃশ্যটি স্ক্রীন জুড়ে চলে যায়। আপনি যখন আলফা বৈশিষ্ট্য পরিবর্তন করেন, ভিউটি ভিতরে বা বাইরে বিবর্ণ হয়।

এই অ্যানিমেশনগুলি তৈরি করার সহজ উপায়ের জন্য, আপনার লেআউটে অ্যানিমেশনগুলি সক্ষম করুন যাতে আপনি যখন কোনও দৃশ্যের দৃশ্যমানতা পরিবর্তন করেন, তখন একটি অ্যানিমেশন স্বয়ংক্রিয়ভাবে প্রযোজ্য হয়৷ আরও তথ্যের জন্য, অটো অ্যানিমেট লেআউট আপডেট দেখুন।

সম্পত্তি অ্যানিমেশন সিস্টেম ব্যবহার করে অ্যানিমেশন তৈরি করতে শিখতে, সম্পত্তি অ্যানিমেশন ওভারভিউ পড়ুন। সাধারণ অ্যানিমেশন তৈরি করতে আপনি নিম্নলিখিত পৃষ্ঠাগুলিও দেখতে পারেন:

পদার্থবিদ্যা ভিত্তিক গতি

চিত্র 3. অবজেক্ট অ্যানিমেটর দিয়ে তৈরি অ্যানিমেশন।

চিত্র 4. পদার্থবিদ্যা-ভিত্তিক API-এর সাহায্যে নির্মিত অ্যানিমেশন।

যখনই সম্ভব, আপনার অ্যানিমেশনগুলিতে বাস্তব-বিশ্বের পদার্থবিদ্যা প্রয়োগ করুন যাতে সেগুলি প্রাকৃতিক দেখতে হয়। উদাহরণস্বরূপ, তাদের লক্ষ্য পরিবর্তনের সময় গতি বজায় রাখা উচিত এবং যেকোনো পরিবর্তনের সময় মসৃণ রূপান্তর করা উচিত।

এই আচরণগুলি প্রদান করতে, অ্যান্ড্রয়েড সমর্থন লাইব্রেরিতে পদার্থবিদ্যা-ভিত্তিক অ্যানিমেশন APIগুলি অন্তর্ভুক্ত রয়েছে যা আপনার অ্যানিমেশনগুলি কীভাবে ঘটবে তা নিয়ন্ত্রণ করতে পদার্থবিজ্ঞানের আইনের উপর নির্ভর করে৷

দুটি সাধারণ পদার্থবিদ্যা-ভিত্তিক অ্যানিমেশন নিম্নরূপ:

অ্যানিমেশনগুলি পদার্থবিদ্যার উপর ভিত্তি করে নয়—যেমন ObjectAnimator API-এর সাহায্যে তৈরি করা—মোটামুটি স্থির এবং একটি নির্দিষ্ট সময়কাল থাকে। লক্ষ্য মান পরিবর্তন হলে, লক্ষ্য মান পরিবর্তনের সময় আপনাকে অবশ্যই অ্যানিমেশনটি বাতিল করতে হবে, অ্যানিমেশনটিকে নতুন শুরু মান হিসাবে একটি নতুন মান দিয়ে পুনরায় কনফিগার করতে হবে এবং নতুন লক্ষ্য মান যোগ করতে হবে। দৃশ্যত, এই প্রক্রিয়াটি অ্যানিমেশনে একটি আকস্মিক স্টপ তৈরি করে এবং পরে একটি বিচ্ছিন্ন আন্দোলন তৈরি করে, যেমনটি চিত্র 3-এ দেখানো হয়েছে।

DynamicAnimation এর মতো পদার্থবিদ্যা-ভিত্তিক অ্যানিমেশন API-এর সাহায্যে তৈরি অ্যানিমেশনগুলি বল দ্বারা চালিত হয়। লক্ষ্য মানের পরিবর্তনের ফলে শক্তির পরিবর্তন হয়। নতুন বল বিদ্যমান বেগের উপর প্রযোজ্য, যা নতুন লক্ষ্যে একটি ক্রমাগত পরিবর্তন করে। এই প্রক্রিয়াটির ফলস্বরূপ আরও প্রাকৃতিক-সুদর্শন অ্যানিমেশন দেখা যায়, যেমন চিত্র 4-এ দেখানো হয়েছে।

অ্যানিমেট বিন্যাস পরিবর্তন

চিত্র 5. আরও বিশদ দেখানোর জন্য একটি অ্যানিমেশন লেআউট পরিবর্তন করে বা একটি নতুন কার্যকলাপ শুরু করে অর্জন করা যেতে পারে।

Android 4.4 (API স্তর 19) এবং উচ্চতর, আপনি যখন বর্তমান কার্যকলাপ বা খণ্ডের মধ্যে লেআউট অদলবদল করেন তখন অ্যানিমেশন তৈরি করতে আপনি রূপান্তর কাঠামো ব্যবহার করতে পারেন। আপনাকে যা করতে হবে তা হল প্রারম্ভিক এবং শেষ বিন্যাস এবং আপনি কোন ধরণের অ্যানিমেশন ব্যবহার করতে চান তা নির্দিষ্ট করুন৷ তারপর সিস্টেমটি বের করে এবং দুটি লেআউটের মধ্যে একটি অ্যানিমেশন চালায়। আপনি এটি ব্যবহার করতে পারেন সম্পূর্ণ UI অদলবদল করতে বা কিছু দৃশ্য সরাতে বা প্রতিস্থাপন করতে।

উদাহরণস্বরূপ, যখন ব্যবহারকারী আরও তথ্য দেখতে একটি আইটেম ট্যাপ করে, আপনি চিত্র 5-এ দেখানো একটি মতান্তর প্রয়োগ করে আইটেমের বিশদ বিবরণ দিয়ে লেআউটটি প্রতিস্থাপন করতে পারেন।

প্রারম্ভিক এবং শেষ বিন্যাস প্রতিটি একটি Scene সংরক্ষণ করা হয়, যদিও প্রারম্ভিক দৃশ্যটি সাধারণত বর্তমান বিন্যাস থেকে স্বয়ংক্রিয়ভাবে নির্ধারিত হয়। আপনি কি ধরনের অ্যানিমেশন চান তা সিস্টেমকে জানাতে আপনি একটি Transition তৈরি করেন, তারপর TransitionManager.go() কল করুন এবং সিস্টেম লেআউটগুলি অদলবদল করতে অ্যানিমেশন চালায়।

আরও তথ্যের জন্য, একটি ট্রানজিশন ব্যবহার করে অ্যানিমেট লেআউট পরিবর্তনগুলি পড়ুন। নমুনা কোডের জন্য, BasicTransition দেখুন।

ক্রিয়াকলাপের মধ্যে অ্যানিমেট করুন

Android 5.0 (API স্তর 21) এবং উচ্চতর সংস্করণে, আপনি অ্যানিমেশনগুলিও তৈরি করতে পারেন যা আপনার ক্রিয়াকলাপগুলির মধ্যে স্থানান্তর করে৷ এটি পূর্ববর্তী বিভাগে বর্ণিত একই ট্রানজিশন ফ্রেমওয়ার্কের উপর ভিত্তি করে, তবে এটি আপনাকে আলাদা ক্রিয়াকলাপে লেআউটগুলির মধ্যে অ্যানিমেশন তৈরি করতে দেয়।

আপনি সাধারণ অ্যানিমেশনগুলি প্রয়োগ করতে পারেন যেমন নতুন ক্রিয়াকলাপটিকে পাশ থেকে স্লাইড করা বা এটিকে বিবর্ণ করা, তবে আপনি অ্যানিমেশনগুলিও তৈরি করতে পারেন যা প্রতিটি ক্রিয়াকলাপে শেয়ার করা ভিউগুলির মধ্যে স্থানান্তর করে৷ উদাহরণস্বরূপ, যখন ব্যবহারকারী আরও তথ্য দেখতে একটি আইটেম ট্যাপ করে, তখন আপনি একটি অ্যানিমেশনের সাথে একটি নতুন কার্যকলাপে রূপান্তর করতে পারেন যা স্ক্রীনটি পূরণ করতে সেই আইটেমটিকে নির্বিঘ্নে বৃদ্ধি করে, যেমন চিত্র 5 এ দেখানো অ্যানিমেশন।

যথারীতি, আপনি startActivity() কল করুন, কিন্তু ActivityOptions.makeSceneTransitionAnimation() দ্বারা প্রদত্ত বিকল্পগুলির একটি বান্ডিল পাস করুন। বিকল্পগুলির এই বান্ডিলে ক্রিয়াকলাপগুলির মধ্যে কোন দৃশ্যগুলি ভাগ করা হয় তা অন্তর্ভুক্ত থাকতে পারে যাতে ট্রানজিশন ফ্রেমওয়ার্ক অ্যানিমেশনের সময় তাদের সংযোগ করতে পারে৷

অতিরিক্ত সম্পদের জন্য, দেখুন: