একটি অ্যানিমেশন রিসোর্স দুই ধরনের অ্যানিমেশনের মধ্যে একটিকে সংজ্ঞায়িত করতে পারে:
- প্রপার্টি অ্যানিমেশন
- একটি
Animator-এর সাথে একটি সেট করা সময় ধরে কোনও অবজেক্টের প্রপার্টি মান পরিবর্তন করে একটি অ্যানিমেশন তৈরি করে। - অ্যানিমেশন দেখুন
-
ভিউ অ্যানিমেশন ফ্রেমওয়ার্কের মাধ্যমে আপনি দুই ধরনের অ্যানিমেশন করতে পারবেন:
- টুইন অ্যানিমেশন:
Animation-এর সাহায্যে একটি ছবিতে একাধিক ট্রান্সফর্মেশন করে অ্যানিমেশন তৈরি করে। - ফ্রেম অ্যানিমেশন:
AnimationDrawable-এর সাথে ক্রমানুসারে ছবির সিকোয়েন্স দেখিয়ে অ্যানিমেশন তৈরি করে।
- টুইন অ্যানিমেশন:
প্রপার্টি অ্যানিমেশন
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>এলিমেন্টও অন্তর্ভুক্ত। - এলিমেন্ট:
- উদাহরণ:
-
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();
- আরও দেখুন:
-
- প্রপার্টি অ্যানিমেশন ওভারভিউ
- প্রপার্টি অ্যানিমেশন সিস্টেম কীভাবে ব্যবহার করতে হয় তার উদাহরণের জন্য API ডেমো দেখুন
অ্যানিমেশন দেখুন
ভিউ অ্যানিমেশন ফ্রেমওয়ার্ক টুইন ও ফ্রেম-বাই-ফ্রেম অ্যানিমেশন, দুটিকেই সাপোর্ট করে, যেগুলি 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>এলিমেন্ট সহ)। - এলিমেন্ট:
- উদাহরণ:
-
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-এ সংজ্ঞায়িত করা হয়, তখন একটি নাম থাকে যা ছোট হাতের অক্ষর দিয়ে শুরু হয়। - উদাহরণ:
-
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>
- এলিমেন্ট:
- উদাহরণ:
-
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.backgroundif (rocketAnimation isAnimatable) { rocketAnimation.start()}জাভা
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.
setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground(); if (rocketAnimation instanceofAnimatable) { ((Animatable)rocketAnimation).start(); } - আরও দেখুন: