অ্যানিমেশন রিসোর্স

একটি অ্যানিমেশন রিসোর্স দুই ধরনের অ্যানিমেশনের মধ্যে একটিকে সংজ্ঞায়িত করতে পারে:

প্রপার্টি অ্যানিমেশন
একটি Animator-এর সাথে একটি সেট করা সময় ধরে কোনও অবজেক্টের প্রপার্টি মান পরিবর্তন করে একটি অ্যানিমেশন তৈরি করে।
অ্যানিমেশন দেখুন

ভিউ অ্যানিমেশন ফ্রেমওয়ার্কের মাধ্যমে আপনি দুই ধরনের অ্যানিমেশন করতে পারবেন:

প্রপার্টি অ্যানিমেশন

XML-এ সংজ্ঞায়িত অ্যানিমেশন যা সেট করা সময় ধরে টার্গেট অবজেক্টের প্রপার্টি, যেমন ব্যাকগ্রাউন্ডের রঙ বা আলফা ভ্যালু, পরিবর্তন করে।

ফাইলের লোকেশন:
res/animator/filename.xml
ফাইলের নাম রিসোর্স আইডি হিসেবে ব্যবহার করা হয়।
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার ValueAnimator, ObjectAnimator, বা AnimatorSet-এর জন্য
রিসোর্স রেফারেন্স:
Java-ভিত্তিক বা Kotlin কোডে: R.animator.filename
XML-এ: @[package:]animator/filename
সিনট্যাক্স:
<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["restart" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["restart" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        ...
    </set>
</set>

ফাইলে অবশ্যই একটি রুট এলিমেন্ট থাকতে হবে: হয় <set>, <objectAnimator>, অথবা <valueAnimator>। আপনি <set> এলিমেন্টের মধ্যে অ্যানিমেশন এলিমেন্ট একসাথে গ্রুপ করতে পারবেন, যার মধ্যে অন্যান্য <set> এলিমেন্টও অন্তর্ভুক্ত।

এলিমেন্ট:
<set>
একটি কন্টেনার যা অন্যান্য অ্যানিমেশন এলিমেন্ট (<objectAnimator>, <valueAnimator>, বা অন্যান্য <set> এলিমেন্ট) ধারণ করে। AnimatorSet দেখায়।

আপনি নেস্টেড <set> ট্যাগ নির্দিষ্ট করে অ্যানিমেশন আরও গ্রুপ করতে পারেন। প্রতিটি <set> তার নিজস্ব ordering অ্যাট্রিবিউট নির্ধারণ করতে পারে।

গুণাবলী:

android:ordering
কীওয়ার্ড। এই সেটে অ্যানিমেশন চালানোর ক্রম উল্লেখ করে।
মানবর্ণনা
sequentiallyএই সেটে পরপর অ্যানিমেশন চালান।
together (ডিফল্ট)এই সেটে একই সময়ে অ্যানিমেশন চালান।
<objectAnimator>
নির্দিষ্ট সময়ের মধ্যে কোনও অবজেক্টের নির্দিষ্ট প্রপার্টি অ্যানিমেট করে। ObjectAnimator দেখায়।

গুণাবলী:

android:propertyName
String. প্রয়োজনীয়। অ্যানিমেট করার জন্য অবজেক্টের প্রপার্টি, এর নাম দ্বারা রেফারেন্স করা হয়েছে। যেমন, আপনি View অবজেক্টের জন্য "alpha" বা "backgroundColor" উল্লেখ করতে পারেন। objectAnimator এলিমেন্ট target অ্যাট্রিবিউট দেখায় না, তাই আপনি XML ডিক্লারেশনে অবজেক্ট অ্যানিমেট করার জন্য সেট করতে পারবেন না। আপনাকে loadAnimator() কল করে আপনার অ্যানিমেশন XML রিসোর্স ইনফ্লেট করতে হবে এবং এই প্রপার্টি আছে এমন টার্গেট অবজেক্ট সেট করতে setTarget() কল করতে হবে।
android:valueTo
ফ্লোট, ইন্ট বা রঙ। প্রয়োজনীয়। যে ভ্যালুতে অ্যানিমেটেড প্রপার্টি শেষ হয়। রঙকে ছয়-সংখ্যার হেক্সাডেসিমেল নম্বর হিসেবে দেখানো হয়, যেমন #333333।
android:valueFrom
ফ্লোট, ইন্ট বা রঙ। অ্যানিমেটেড প্রপার্টি যে ভ্যালু থেকে শুরু হয়। উল্লেখ করা না থাকলে, প্রপার্টির get মেথড থেকে পাওয়া ভ্যালু থেকে অ্যানিমেশন শুরু হয়। রঙকে ছয়-সংখ্যার হেক্সাডেসিমেল নম্বর হিসেবে দেখানো হয়, যেমন #333333।
android:duration
int. অ্যানিমেশনের সময় মিলিসেকেন্ডে। ৩০০ মিলিসেকেন্ড হল ডিফল্ট।
android:startOffset
int. start() কল করার পরে অ্যানিমেশন কত মিলিসেকেন্ড দেরি করে।
android:repeatCount
int. অ্যানিমেশন কতবার রিপিট করতে হবে। অসংখ্যবার রিপিট করতে "-1"-এ সেট করুন অথবা ধনাত্মক পূর্ণসংখ্যায় সেট করুন। যেমন, "1" ভ্যালু মানে হল, অ্যানিমেশনটি প্রাথমিকভাবে একবার চলার পরে আবার রিপিট করা হয়, তাই অ্যানিমেশনটি মোট দুবার চলে। ডিফল্ট ভ্যালু হল "0", যার অর্থ হল কোনও পুনরাবৃত্তি নেই।
android:repeatMode
int. অ্যানিমেশন শেষ হওয়ার সময় সেটি কীভাবে কাজ করে। এই অ্যাট্রিবিউট কার্যকর করতে, android:repeatCount অবশ্যই একটি ধনাত্মক পূর্ণসংখ্যা বা "-1"-এ সেট করতে হবে। প্রতিটি পুনরাবৃত্তির সাথে অ্যানিমেশন বিপরীত দিকে চালানোর জন্য "reverse"-এ সেট করুন অথবা প্রতিবার শুরু থেকে অ্যানিমেশন লুপ করার জন্য "restart"-এ সেট করুন।
android:valueType
কীওয়ার্ড। মানটি রঙ হলে এই অ্যাট্রিবিউট নির্দিষ্ট করবেন না। অ্যানিমেশন ফ্রেমওয়ার্ক অটোমেটিক রঙের ভ্যালু ম্যানেজ করে।
মানবর্ণনা
intTypeঅ্যানিমেটেড ভ্যালু যে পূর্ণসংখ্যা তা নির্দিষ্ট করে।
floatType (ডিফল্ট)অ্যানিমেটেড ভ্যালু যে ফ্লোট তা নির্দিষ্ট করে।
<animator>
নির্দিষ্ট সময় ধরে অ্যানিমেশন দেখায়। ValueAnimator-কে দেখায়।

গুণাবলী:

android:valueTo
ফ্লোট, ইন্ট বা রঙ। প্রয়োজনীয়। যে মানে অ্যানিমেশন শেষ হয়। রঙকে ছয়-সংখ্যার হেক্সাডেসিমেল নম্বর হিসেবে দেখানো হয়, যেমন #333333।
android:valueFrom
ফ্লোট, ইন্ট বা রঙ। প্রয়োজনীয়। যে মান থেকে অ্যানিমেশন শুরু হয়। রঙকে ছয়-সংখ্যার হেক্সাডেসিমেল নম্বর হিসেবে দেখানো হয়, যেমন #333333।
android:duration
int. অ্যানিমেশনের সময় মিলিসেকেন্ডে। ৩০০ মিলি সেকেন্ড হল ডিফল্ট।
android:startOffset
int. start() কল করার পরে অ্যানিমেশন কত মিলিসেকেন্ড দেরি করে।
android:repeatCount
int. অ্যানিমেশন কতবার রিপিট করতে হবে। অসংখ্যবার রিপিট করতে "-1"-এ সেট করুন অথবা ধনাত্মক পূর্ণসংখ্যায় সেট করুন। যেমন, "1" ভ্যালু মানে হল, অ্যানিমেশনটি প্রাথমিকভাবে একবার চলার পরে আবার রিপিট করা হয়, তাই অ্যানিমেশনটি মোট দুবার চলে। ডিফল্ট ভ্যালু হল "0", যার অর্থ হল কোনও পুনরাবৃত্তি নেই।
android:repeatMode
int. অ্যানিমেশন শেষ হওয়ার সময় সেটি কীভাবে কাজ করে। এই অ্যাট্রিবিউট কার্যকর করতে, android:repeatCount অবশ্যই একটি ধনাত্মক পূর্ণসংখ্যা বা "-1"-এ সেট করতে হবে। প্রতিটি পুনরাবৃত্তির সাথে অ্যানিমেশন বিপরীত দিকে চালানোর জন্য "reverse"-এ সেট করুন অথবা প্রতিবার শুরু থেকে অ্যানিমেশন লুপ করার জন্য "restart"-এ সেট করুন।
android:valueType
কীওয়ার্ড। মানটি রঙ হলে এই অ্যাট্রিবিউট নির্দিষ্ট করবেন না। অ্যানিমেশন ফ্রেমওয়ার্ক অটোমেটিক রঙের ভ্যালু ম্যানেজ করে।
মানবর্ণনা
intTypeঅ্যানিমেটেড ভ্যালু যে পূর্ণসংখ্যা তা নির্দিষ্ট করে।
floatType (ডিফল্ট)অ্যানিমেটেড ভ্যালু যে ফ্লোট তা নির্দিষ্ট করে।
উদাহরণ:

XML ফাইল res/animator/property_animator.xml-এ সেভ করা হয়েছে:

<set android:ordering="sequentially">
    <set>
        <objectAnimator
            android:propertyName="x"
            android:duration="500"
            android:valueTo="400"
            android:valueType="intType"/>
        <objectAnimator
            android:propertyName="y"
            android:duration="500"
            android:valueTo="300"
            android:valueType="intType"/>
    </set>
    <objectAnimator
        android:propertyName="alpha"
        android:duration="500"
        android:valueTo="1f"/>
</set>

এই অ্যানিমেশন রান করতে, আপনার কোডে XML রিসোর্সকে AnimatorSet অবজেক্টে ইনফ্লেট করুন এবং তারপর অ্যানিমেশন সেট শুরু করার আগে সব অ্যানিমেশনের জন্য টার্গেট অবজেক্ট সেট করুন। setTarget() কল করা হলে, সুবিধার জন্য AnimatorSet-এর সব চাইল্ডের জন্য একটি টার্গেট অবজেক্ট সেট করা হয়। এটি কীভাবে করতে হয় তা নিম্নলিখিত কোড থেকে জানতে পারবেন:

Kotlin

val set: AnimatorSet = AnimatorInflater.loadAnimator(myContext, R.animator.property_animator)
    .apply {
        setTarget(myObject)
        start()
    }

জাভা

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.animator.property_animator);
set.setTarget(myObject);
set.start();
আরও দেখুন:

অ্যানিমেশন দেখুন

ভিউ অ্যানিমেশন ফ্রেমওয়ার্ক টুইন ও ফ্রেম-বাই-ফ্রেম অ্যানিমেশন, দুটিকেই সাপোর্ট করে, যেগুলি XML-এ ঘোষণা করা হয়। দুটি পদ্ধতি কীভাবে ব্যবহার করতে হয় তা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

টুইন অ্যানিমেশন

XML-এ সংজ্ঞায়িত অ্যানিমেশন যা গ্রাফিকে ট্রানজিশন পারফর্ম করে, যেমন ঘোরানো, ফেড করা, সরানো এবং স্ট্রেচ করা।

ফাইলের লোকেশন:
res/anim/filename.xml
ফাইলের নাম রিসোর্স আইডি হিসেবে ব্যবহার করা হয়।
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে Animation
রিসোর্স রেফারেন্স:
Java-তে: R.anim.filename
XML-এ: @[package:]anim/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />
    <set>
        ...
    </set>
</set>

ফাইলে অবশ্যই একটি রুট এলিমেন্ট থাকতে হবে: হয় একটি <alpha>, <scale>, <translate>, <rotate>, অথবা <set> এলিমেন্ট যা অন্যান্য অ্যানিমেশন এলিমেন্টের একটি গ্রুপ (বা একাধিক গ্রুপ) ধারণ করে (নেস্টেড <set> এলিমেন্ট সহ)।

এলিমেন্ট:
<set>
অন্যান্য অ্যানিমেশন এলিমেন্ট (<alpha>, <scale>, <translate>, <rotate>) বা অন্যান্য <set> এলিমেন্ট ধারণ করে এমন একটি কন্টেনার। AnimationSet-কে দেখায়।

গুণাবলী:

android:interpolator
ইন্টারপোলেটর রিসোর্স। অ্যানিমেশনে প্রয়োগ করার জন্য একটি Interpolator। ভ্যালুটি অবশ্যই এমন একটি রিসোর্সের রেফারেন্স হতে হবে যা একটি ইন্টারপোলেটর নির্দিষ্ট করে, ইন্টারপোলেটর ক্লাস নাম নয়। প্ল্যাটফর্মে ডিফল্ট ইন্টারপোলেটর রিসোর্স উপলভ্য আছে অথবা আপনি নিজের ইন্টারপোলেটর রিসোর্স তৈরি করতে পারেন। ইন্টারপোলেটর সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত আলোচনা দেখুন।
android:shareInterpolator
বুলিয়ান। "true" যদি আপনি সব চাইল্ড এলিমেন্টের মধ্যে একই ইন্টারপোলেটর শেয়ার করতে চান।
<alpha>
ফেড-ইন বা ফেড-আউট অ্যানিমেশন। AlphaAnimation-কে দেখায়।

গুণাবলী:

android:fromAlpha
ফ্লোট। অস্বচ্ছতা অফসেট শুরু হচ্ছে, যেখানে ০.০ হল স্বচ্ছ এবং ১.০ হল অস্বচ্ছ।
android:toAlpha
ফ্লোট। অস্বচ্ছতা অফসেট শেষ হচ্ছে, যেখানে 0.0 হল স্বচ্ছ এবং 1.0 হল অস্বচ্ছ।

<alpha>-এর সাথে কাজ করে এমন আরও অ্যাট্রিবিউটের জন্য, Animation-এর ক্লাস রেফারেন্স দেখুন, যার XML অ্যাট্রিবিউট এই এলিমেন্ট থেকে নেওয়া হয়েছে।

<scale>
ছোট বড় করার অ্যানিমেশন। pivotX এবং pivotY উল্লেখ করে আপনি ছবির কেন্দ্রবিন্দু নির্দিষ্ট করতে পারেন যেখান থেকে এটি বাইরের দিকে বা ভিতরের দিকে বৃদ্ধি পায়। যেমন, এই ভ্যালুগুলি 0,0 (উপরে বাঁদিকের কোণ) হলে, সমস্ত গ্রোথ নিচে এবং ডানদিকে হবে। ScaleAnimation-এর প্রতিনিধিত্ব করে।

গুণাবলী:

android:fromXScale
ফ্লোট। X সাইজ অফসেট শুরু হচ্ছে, যেখানে ১.০ মানে কোনও পরিবর্তন নেই।
android:toXScale
ফ্লোট। X সাইজ অফসেট শেষ হচ্ছে, যেখানে ১.০-এর অর্থ কোনও পরিবর্তন নেই।
android:fromYScale
ফ্লোট। Y সাইজ অফসেট শুরু হচ্ছে, যেখানে ১.০ মানে কোনও পরিবর্তন নেই।
android:toYScale
ফ্লোট। Y সাইজ অফসেট শেষ হচ্ছে, যেখানে ১.০ মানে কোনও পরিবর্তন নেই।
android:pivotX
ফ্লোট। অবজেক্ট স্কেল করা হলে, X অক্ষ স্থির থাকে।
android:pivotY
ফ্লোট। অবজেক্ট স্কেল করা হলে, Y অক্ষ স্থির থাকে।

<scale>-এর সাথে কাজ করে এমন আরও অ্যাট্রিবিউটের জন্য, Animation-এর ক্লাস রেফারেন্স দেখুন, যার XML অ্যাট্রিবিউট এই এলিমেন্ট থেকে নেওয়া হয়েছে।

<translate>
উল্লম্ব এবং/অথবা অনুভূমিক মোশন। এটি একটি TranslateAnimation-কে বোঝায়। এই তিনটি ফর্ম্যাটের যেকোনও একটিতে নিম্নলিখিত অ্যাট্রিবিউট কাজ করে:
  • -১০০ থেকে ১০০ পর্যন্ত মান, যার শেষে "%" চিহ্ন থাকে, যা নিজের সাপেক্ষে শতাংশ নির্দেশ করে।
  • -১০০ থেকে ১০০ পর্যন্ত ভ্যালু "%p" দিয়ে শেষ হয়, যা এর পেরেন্টের সাপেক্ষে শতাংশ নির্দেশ করে।
  • কোনও সাফিক্স ছাড়া ফ্লোট ভ্যালু, যা পরম মান নির্দেশ করে।

গুণাবলী:

android:fromXDelta
ফ্লোট বা শতাংশ। X অফসেট শুরু হচ্ছে। সাধারণ পজিশনের সাপেক্ষে পিক্সেল হিসেবে, যেমন "5"; এলিমেন্টের প্রস্থের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%"; অথবা পেরেন্ট প্রস্থের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%p"।
android:toXDelta
ফ্লোট বা শতাংশ। X অফসেট শেষ হচ্ছে। সাধারণ পজিশনের সাপেক্ষে পিক্সেল হিসেবে, যেমন "5"; এলিমেন্টের প্রস্থের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%"; অথবা পেরেন্ট প্রস্থের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%p"।
android:fromYDelta
ফ্লোট বা শতাংশ। Y অফসেট শুরু হচ্ছে। এটি স্বাভাবিক অবস্থানের সাপেক্ষে পিক্সেলে, যেমন "5"; এলিমেন্টের উচ্চতার সাপেক্ষে শতাংশে, যেমন "5%"; অথবা মূল উচ্চতার সাপেক্ষে শতাংশে, যেমন "5%p", প্রকাশ করা হয়।
android:toYDelta
ফ্লোট বা শতাংশ। Y অফসেট শেষ হচ্ছে। সাধারণ পজিশনের সাপেক্ষে পিক্সেল হিসেবে, যেমন "5"; এলিমেন্টের উচ্চতার সাপেক্ষে শতাংশ হিসেবে, যেমন "5%"; অথবা মূল উচ্চতার সাপেক্ষে শতাংশ হিসেবে, যেমন "5%p"।

<translate>-এর সাথে কাজ করে এমন আরও অ্যাট্রিবিউটের জন্য, Animation-এর ক্লাস রেফারেন্স দেখুন, যার XML অ্যাট্রিবিউট এই এলিমেন্ট থেকে নেওয়া হয়েছে।

<rotate>
একটি রোটেশন অ্যানিমেশন। RotateAnimation-কে দেখায়।

গুণাবলী:

android:fromDegrees
ফ্লোট। শুরুর কৌণিক অবস্থান, ডিগ্রিতে।
android:toDegrees
ফ্লোট। শেষের কৌণিক অবস্থান, ডিগ্রিতে।
android:pivotX
ফ্লোট বা শতাংশ। ঘোরানোর কেন্দ্রের X স্থানাঙ্ক। অবজেক্টের বাঁদিকের প্রান্তের সাপেক্ষে পিক্সেলে, যেমন "5"; অবজেক্টের বাঁদিকের প্রান্তের সাপেক্ষে শতাংশে, যেমন "5%"; অথবা পেরেন্ট কন্টেনারের বাঁদিকের প্রান্তের সাপেক্ষে শতাংশে, যেমন "5%p"।
android:pivotY
ফ্লোট বা শতাংশ। রোটেশনের কেন্দ্রের Y স্থানাঙ্ক। অবজেক্টের উপরের প্রান্তের সাপেক্ষে পিক্সেল হিসেবে, যেমন "5"; অবজেক্টের উপরের প্রান্তের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%"; অথবা পেরেন্ট কন্টেনারের উপরের প্রান্তের সাপেক্ষে শতাংশ হিসেবে, যেমন "5%p"।

<rotate>-এর সাথে কাজ করে এমন আরও অ্যাট্রিবিউটের জন্য, Animation-এর ক্লাস রেফারেন্স দেখুন, যার XML অ্যাট্রিবিউট এই এলিমেন্ট থেকে নেওয়া হয়েছে।

উদাহরণ:

XML ফাইল res/anim/hyperspace_jump.xml-এ সেভ করা হয়েছে:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>

নিম্নলিখিত অ্যাপ্লিকেশন কোড ImageView-এ অ্যানিমেশন প্রয়োগ করে এবং অ্যানিমেশন শুরু করে:

Kotlin

val image: ImageView = findViewById(R.id.image)
val hyperspaceJump: Animation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump)
image.startAnimation(hyperspaceJump)

জাভা

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
আরও দেখুন:

ইন্টারপোলেটর

ইন্টারপোলেটর হল XML-এ সংজ্ঞায়িত একটি অ্যানিমেশন মডিফায়ার যা অ্যানিমেশনে পরিবর্তনের হারকে প্রভাবিত করে। এটি আপনার আগে থেকে থাকা অ্যানিমেশন এফেক্টকে দ্রুত, ধীর, পুনরাবৃত্তি, বাউন্স ইত্যাদি করতে দেয়।

android:interpolator অ্যাট্রিবিউট সহ অ্যানিমেশন এলিমেন্টে ইন্টারপোলেটর প্রয়োগ করা হয়, যার ভ্যালু হল ইন্টারপোলেটর রিসোর্সের রেফারেন্স।

Android-এ উপলভ্য সব ইন্টারপোলেটর হল Interpolator ক্লাসের সাবক্লাস। প্রতিটি ইন্টারপোলেটর ক্লাসের জন্য, Android-এ একটি পাবলিক রিসোর্স অন্তর্ভুক্ত থাকে যা আপনি android:interpolator অ্যাট্রিবিউট ব্যবহার করে অ্যানিমেশনে ইন্টারপোলেটর প্রয়োগ করতে রেফারেন্স করতে পারেন। নিম্নলিখিত সারণীতে প্রতিটি ইন্টারপোলেটরের জন্য ব্যবহার করার রিসোর্স উল্লেখ করা আছে:

ইন্টারপোলেটর ক্লাসরিসোর্স আইডি
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator
AccelerateInterpolator @android:anim/accelerate_interpolator
AnticipateInterpolator @android:anim/anticipate_interpolator
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator
BounceInterpolator @android:anim/bounce_interpolator
CycleInterpolator @android:anim/cycle_interpolator
DecelerateInterpolator @android:anim/decelerate_interpolator
LinearInterpolator @android:anim/linear_interpolator
OvershootInterpolator @android:anim/overshoot_interpolator

android:interpolator অ্যাট্রিবিউটের সাথে আপনি কীভাবে এর মধ্যে একটি প্রয়োগ করতে পারবেন তা এখানে দেওয়া হল:

<set android:interpolator="@android:anim/accelerate_interpolator">
    ...
</set>

কাস্টম ইন্টারপোলেটর

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

ফাইলের লোকেশন:
res/anim/filename.xml
ফাইলের নাম রিসোর্স আইডি হিসেবে ব্যবহার করা হয়।
কম্পাইল করা রিসোর্স ডেটাটাইপ:
সংশ্লিষ্ট ইন্টারপোলেটর অবজেক্টের রিসোর্স পয়েন্টার
রিসোর্স রেফারেন্স:
XML-এ: @[package:]anim/filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android"
    android:attribute_name="value"
    />

আপনি কোনও অ্যাট্রিবিউট প্রয়োগ না করলে, আপনার ইন্টারপোলেটর ঠিক প্ল্যাটফর্মের দেওয়া ইন্টারপোলেটরের মতোই কাজ করে, যা আগের সারণীতে তালিকাভুক্ত করা হয়েছে।

এলিমেন্ট:
লক্ষ্য করুন যে প্রতিটি Interpolator ইমপ্লিমেন্টেশন, যখন XML-এ সংজ্ঞায়িত করা হয়, তখন একটি নাম থাকে যা ছোট হাতের অক্ষর দিয়ে শুরু হয়।

<accelerateDecelerateInterpolator>
পরিবর্তনের হার ধীরে ধীরে শুরু ও শেষ হয়, তবে মাঝখানে ত্বরান্বিত হয়।

কোনও অ্যাট্রিবিউট নেই।

<accelerateInterpolator>
পরিবর্তনের হার ধীরে ধীরে শুরু হয়, তারপর দ্রুত হয়।

গুণাবলী:

android:factor
ফ্লোট। অ্যাক্সিলারেশন রেট। ডিফল্ট হল ১।
<anticipateInterpolator>
পরিবর্তনটি পিছন থেকে শুরু হয়ে সামনের দিকে যায়।

গুণাবলী:

android:tension
ফ্লোট। কতটা টেনশন প্রয়োগ করতে হবে। ডিফল্ট হল ২।
<anticipateOvershootInterpolator>
পরিবর্তনটি পিছনের দিকে শুরু হয়, তারপরে সামনের দিকে এগিয়ে যায় এবং টার্গেট ভ্যালু ছাড়িয়ে যায়, তারপরে চূড়ান্ত ভ্যালুতে স্থির হয়।

গুণাবলী:

android:tension
ফ্লোট। কতটা টেনশন প্রয়োগ করতে হবে। ডিফল্ট হল ২।
android:extraTension
ফ্লোট। যে পরিমাণ দিয়ে টেনশন গুণ করতে হবে। ডিফল্ট হল ১.৫।
<bounceInterpolator>
পরিবর্তনটি শেষে বাউন্স করে।

কোনও অ্যাট্রিবিউট নেই

<cycleInterpolator>
নির্দিষ্ট সংখ্যক চক্রের জন্য অ্যানিমেশন রিপিট করে। পরিবর্তনের হার সাইনুসয়ডাল প্যাটার্ন অনুসরণ করে।

গুণাবলী:

android:cycles
পূর্ণসংখ্যা। সাইকেলের সংখ্যা। ডিফল্ট হল ১।
<decelerateInterpolator>
পরিবর্তনের হার দ্রুত শুরু হয়, তারপর কমে যায়।

গুণাবলী:

android:factor
ফ্লোট। গতি কমানোর হার। ডিফল্ট হল ১।
<linearInterpolator>
পরিবর্তনের হার কনস্ট্যান্ট।

কোনও অ্যাট্রিবিউট নেই।

<overshootInterpolator>
পরিবর্তনটি দ্রুত এগিয়ে যায় এবং শেষ ভ্যালুকে ছাড়িয়ে যায়, তারপর ফিরে আসে।

গুণাবলী:

android:tension
ফ্লোট। কতটা টেনশন প্রয়োগ করতে হবে। ডিফল্ট হল ২।
উদাহরণ:

XML ফাইল res/anim/my_overshoot_interpolator.xml-এ সেভ করা হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:tension="7.0"
    />

এই অ্যানিমেশন XML ইন্টারপোলেটর প্রয়োগ করে:

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/my_overshoot_interpolator"
    android:fromXScale="1.0"
    android:toXScale="3.0"
    android:fromYScale="1.0"
    android:toYScale="3.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="700" />

ফ্রেম অ্যানিমেশন

XML-এ সংজ্ঞায়িত অ্যানিমেশন যা ফিল্মের মতো ক্রমানুসারে ছবির সিকোয়েন্স দেখায়।

ফাইলের লোকেশন:
res/drawable/filename.xml
ফাইলের নাম রিসোর্স আইডি হিসেবে ব্যবহার করা হয়।
কম্পাইল করা রিসোর্স ডেটাটাইপ:
রিসোর্স পয়েন্টার থেকে AnimationDrawable
রিসোর্স রেফারেন্স:
Java-তে: R.drawable.filename
XML-এ: @[package:]drawable.filename
সিনট্যাক্স:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource_name"
        android:duration="integer" />
</animation-list>
এলিমেন্ট:
<animation-list>
প্রয়োজনীয়। এটি অবশ্যই রুট এলিমেন্ট হতে হবে। এক বা একাধিক <item> এলিমেন্ট আছে।

গুণাবলী:

android:oneshot
বুলিয়ান। আপনি একবার অ্যানিমেশন দেখাতে চাইলে "true"; অ্যানিমেশন লুপ করতে চাইলে "false"।
<item>
অ্যানিমেশনের একটি ফ্রেম। <animation-list> এলিমেন্টের চাইল্ড হতে হবে।

গুণাবলী:

android:drawable
ড্রয়েবল রিসোর্স। এই ফ্রেমের জন্য ব্যবহার করার জন্য ড্রয়েবল।
android:duration
পূর্ণসংখ্যা। এই ফ্রেমটি দেখানোর সময়সীমা, মিলিসেকেন্ডে।
উদাহরণ:

XML ফাইল res/drawable/rocket_thrust.xml-এ সেভ করা হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

নিম্নলিখিত অ্যাপ্লিকেশন কোড View-এর জন্য ব্যাকগ্রাউন্ড হিসেবে অ্যানিমেশন সেট করে, তারপর অ্যানিমেশনটি চালান:

Kotlin

val rocketImage: ImageView = findViewById(R.id.rocket_image)
rocketImage.setBackgroundResource(R.drawable.rocket_thrust)

val rocketAnimation = rocketImage.background
if (rocketAnimation is Animatable) {
    rocketAnimation.start()
}

জাভা

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation = rocketImage.getBackground();
if (rocketAnimation instanceof Animatable) {
    ((Animatable)rocketAnimation).start();
}
আরও দেখুন: