একটি অ্যানিমেশন সংস্থান দুটি ধরণের অ্যানিমেশনগুলির মধ্যে একটিকে সংজ্ঞায়িত করতে পারে:
- সম্পত্তি অ্যানিমেশন
- একটি
Animator
দিয়ে একটি নির্দিষ্ট সময়ের মধ্যে একটি বস্তুর সম্পত্তি মান পরিবর্তন করে একটি অ্যানিমেশন তৈরি করে। - অ্যানিমেশন দেখুন
দুটি ধরণের অ্যানিমেশন রয়েছে যা আপনি ভিউ অ্যানিমেশন ফ্রেমওয়ার্ক দিয়ে করতে পারেন:
- টুইন অ্যানিমেশন : একটি
Animation
সাথে একটি একক চিত্রে একাধিক রূপান্তর সম্পাদন করে একটি অ্যানিমেশন তৈরি করে। - ফ্রেম অ্যানিমেশন :
AnimationDrawable
সাথে ক্রমানুসারে চিত্রগুলির একটি ক্রম দেখিয়ে একটি অ্যানিমেশন তৈরি করে।
- টুইন অ্যানিমেশন : একটি
সম্পত্তি অ্যানিমেশন
XML-এ সংজ্ঞায়িত একটি অ্যানিমেশন যা লক্ষ্য বস্তুর বৈশিষ্ট্য পরিবর্তন করে, যেমন ব্যাকগ্রাউন্ড কালার বা আলফা মান, নির্দিষ্ট সময়ের মধ্যে।
- ফাইল অবস্থান:
-
res/animator/ filename .xml
ফাইলের নাম রিসোর্স আইডি হিসাবে ব্যবহৃত হয়। - সংকলিত সম্পদ ডেটা টাইপ:
- একটি
ValueAnimator
,ObjectAnimator
, বাAnimatorSet
এ রিসোর্স পয়েন্টার - সম্পদ রেফারেন্স:
- জাভা-ভিত্তিক বা কোটলিন কোডে:
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> ...
ফাইলটিতে একটি একক মূল উপাদান থাকতে হবে: হয়
,
, অথবা
। আপনি অন্যান্য
উপাদান সহ
উপাদানের ভিতরে অ্যানিমেশন উপাদানগুলিকে একত্রিত করতে পারেন।- উপাদান:
- উদাহরণ:
XML ফাইল
res/animator/property_animator.xml
এ সংরক্ষিত হয়েছে :android:ordering="sequentially"> android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> এই অ্যানিমেশনটি চালানোর জন্য, আপনার কোডের XML সংস্থানগুলিকে একটি
AnimatorSet
অবজেক্টে স্ফীত করুন এবং তারপর অ্যানিমেশন সেট শুরু করার আগে সমস্ত অ্যানিমেশনের জন্য লক্ষ্য বস্তু সেট করুন।setTarget()
কল করাAnimatorSet
সমস্ত বাচ্চাদের জন্য সুবিধা হিসাবে একটি একক লক্ষ্য বস্তু সেট করে। নিম্নলিখিত কোড দেখায় কিভাবে এটি করতে হয়:কোটলিন
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
রিসোর্স পয়েন্টার - সম্পদ রেফারেন্স:
- জাভাতে:
R.anim. filename
XML-এ:@[ package :]anim/ filename
- সিনট্যাক্স:
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> ...
ফাইলটিতে একটি একক মূল উপাদান থাকতে হবে: হয় একটি
,
,
,
, অথবা
উপাদান যা অন্যান্য অ্যানিমেশন উপাদানগুলির একটি গ্রুপ (বা গোষ্ঠী) ধারণ করে (নেস্টেড
সহ উপাদান)।- উপাদান:
- উদাহরণ:
XML ফাইল
res/anim/hyperspace_jump.xml
এ সংরক্ষিত হয়েছে:xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> 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" /> android:interpolator="@android:anim/accelerate_interpolator" android:startOffset="700"> 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" /> android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> নিম্নলিখিত অ্যাপ্লিকেশন কোডটি একটি
ImageView
এ অ্যানিমেশন প্রয়োগ করে এবং অ্যানিমেশন শুরু করে:কোটলিন
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
interpolator অ্যাট্রিবিউট সহ একটি অ্যানিমেশন উপাদানে একটি ইন্টারপোলেটর প্রয়োগ করা হয়, যার মানটি একটি ইন্টারপোলেটর সম্পদের একটি রেফারেন্স।
অ্যান্ড্রয়েডে উপলব্ধ সমস্ত ইন্টারপোলেটরগুলি Interpolator
ক্লাসের সাবক্লাস। প্রতিটি ইন্টারপোলেটর ক্লাসের জন্য, অ্যান্ড্রয়েডে একটি পাবলিক রিসোর্স রয়েছে যা আপনি 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
অ্যাট্রিবিউট দিয়ে আপনি কীভাবে এর মধ্যে একটি প্রয়োগ করতে পারেন তা এখানে:
android:interpolator="@android:anim/accelerate_interpolator"> ...
কাস্টম ইন্টারপোলেটর
আপনি যদি প্ল্যাটফর্ম দ্বারা প্রদত্ত ইন্টারপোলেটরগুলির সাথে সন্তুষ্ট না হন তবে আপনি পরিবর্তিত বৈশিষ্ট্যগুলির সাথে একটি কাস্টম ইন্টারপোলেটর সংস্থান তৈরি করতে পারেন৷ উদাহরণস্বরূপ, আপনি AnticipateInterpolator
এর জন্য ত্বরণের হার সামঞ্জস্য করতে পারেন বা CycleInterpolator
এর জন্য চক্রের সংখ্যা সামঞ্জস্য করতে পারেন। এটি করার জন্য, আপনি একটি XML ফাইলে আপনার নিজস্ব ইন্টারপোলেটর সংস্থান তৈরি করুন।
- ফাইল অবস্থান:
-
res/anim/ filename .xml
ফাইলের নাম রিসোর্স আইডি হিসাবে ব্যবহৃত হয়। - সংকলিত সম্পদ ডেটা টাইপ:
- সংশ্লিষ্ট ইন্টারপোলেটর অবজেক্টে রিসোর্স পয়েন্টার
- সম্পদ রেফারেন্স:
- XML-এ:
@[ package :]anim/ filename
- সিনট্যাক্স:
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
এ সংরক্ষিত হয়েছে:version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android" android:tension="7.0" /> এই অ্যানিমেশন XML ইন্টারপোলেটর প্রয়োগ করে:
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
রিসোর্স পয়েন্টার - সম্পদ রেফারেন্স:
- জাভাতে:
R.drawable. filename
XML-এ:@[ package :]drawable. filename
- সিনট্যাক্স:
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" />
- উপাদান:
- উদাহরণ:
XML ফাইল
res/drawable/rocket_thrust.xml
এ সংরক্ষিত হয়েছে:version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> - android:drawable="@drawable/rocket_thrust1" android:duration="200" />
- android:drawable="@drawable/rocket_thrust2" android:duration="200" />
- android:drawable="@drawable/rocket_thrust3" android:duration="200" />
নিম্নলিখিত অ্যাপ্লিকেশন কোডটি একটি
View
এর পটভূমি হিসাবে অ্যানিমেশন সেট করে, তারপর অ্যানিমেশনটি চালান:কোটলিন
val rocketImage: ImageView = findViewById(R.id.rocket_image) rocketImage.
setBackgroundResource
(R.drawable.rocket_thrust) val rocketAnimation = rocketImage.background
if (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()
; }- android:drawable="@drawable/rocket_thrust1" android:duration="200" />
- এছাড়াও দেখুন: