View Animation — কী, Android-এ Tween Animation

লেখক: IT Sectr প্রকাশিত: 2026-03-01 পড়ার সময়: 8 মিনিট

View Animation — Android API 1+ এর একটি পুরনো অ্যানিমেশন সিস্টেম যা Tween Animation (Alpha, Translate, Scale, Rotate) এর মাধ্যমে View-অবজেক্টের সাথে কাজ করে। Google সব নতুন প্রজেক্টের জন্য Property Animation (Animator) সুপারিশ করে। এই নিবন্ধটি নীতি, প্রকার, XML মার্কআপ এবং পরিত্যাগের কারণ ব্যাখ্যা করে।

মূল পয়েন্ট

  • View Animation — Tween Animation এর মাধ্যমে View অ্যানিমেট করে: Alpha, Translate, Scale, Rotate
  • XML সংজ্ঞা — অ্যানিমেশনগুলি res/anim/ এ , , , ব্যবহার করে বর্ণনা করা হয়
  • AnimationSet — সাধারণ প্যারামিটার সহ একটি সেটে একাধিক অ্যানিমেশনের সংমিশ্রণ
  • সীমাবদ্ধতা — View Animation বৈশিষ্ট্য পরিবর্তন করে না, শুধু রেন্ডারিং পরিবর্তন করে: View তার আসল অবস্থানে থাকে
  • Property Animation — আধুনিক প্রতিস্থাপন (Animator) যা বাস্তব অবজেক্ট বৈশিষ্ট্যের সাথে কাজ করে

View Animation কী?

View Animation Android-এর একটি অ্যানিমেশন উপতন্ত্র যা View স্তরে (API 1+) কাজ করে। এটি চার ধরনের Tween Animation ব্যবহার করে: AlphaAnimation (স্বচ্ছতা), TranslateAnimation (স্থানান্তর), ScaleAnimation (স্কেল) এবং RotateAnimation (ঘূর্ণন)। প্রতিটি অ্যানিমেশন res/anim/ ফোল্ডারে XML ফাইলে বর্ণনা করা হয় বা Kotlin কোডে প্রোগ্রামেটিকভাবে তৈরি করা হয়।

View Animation প্রক্রিয়া View-এর প্রকৃত বৈশিষ্ট্য পরিবর্তন করে না — এটি View-কে নতুন অবস্থান, স্কেল বা স্বচ্ছতায় পুনরায় আঁকে, কিন্তু onTouchEvent() কলব্যック মূল অবস্থানের স্থানাঙ্ক গ্রহণ করে। এটি একটি মূল সীমাবদ্ধতা যা ক্লিক অমিল (click mismatch) নামে পরিচিত।

Android ডেভেলপার ডকুমেন্টেশন (2026) অনুসারে, Google Android 3.0 (API 11) থেকে View Animation-কে একটি অবচিত API হিসাবে চিহ্নিত করেছে। নতুন প্রজেক্টের জন্য Property Animation সুপারিশ করা হয় — Animator, AnimatorSet এবং ObjectAnimator, যা setter পদ্ধতির মাধ্যমে বাস্তব অবজেক্ট বৈশিষ্ট্যের সাথে কাজ করে।

Tween Animation এর প্রকার

Tween Animation কীফ্রেমের “মধ্যে” অ্যানিমেশন: আপনি শুরু এবং শেষ অবস্থা নির্ধারণ করেন এবং সিস্টেম মধ্যবর্তী ফ্রেম গণনা করে। Android চারটি মানক প্রকার সরবরাহ করে, প্রতিটি নিজস্ব প্যারামিটার সেট সহ।

AlphaAnimation

AlphaAnimation View-এর স্বচ্ছতা fromAlpha থেকে toAlpha পর্যন্ত পরিবর্তন করে। মান 0.0 (সম্পূর্ণ স্বচ্ছ) থেকে 1.0 (সম্পূর্ণ দৃশ্যমান) পর্যন্ত। ডিফল্টভাবে, অ্যানিমেশন 300 ms স্থায়ী হয়। প্যারামিটার fillAfter=true View-কে চূড়ান্ত স্বচ্ছতা অবস্থায় রাখে।

xml
<!-- res/anim/fade_out.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:fillAfter="true" />

TranslateAnimation

TranslateAnimation View-কে প্রারম্ভিক অবস্থান (fromXDelta, fromYDelta) থেকে চূড়ান্ত অবস্থান (toXDelta, toYDelta) এ স্থানান্তর করে। মানগুলি পিক্সেল, প্যারেন্টের শতাংশ বা View-এর শতাংশে নির্দিষ্ট করা হয়। উদাহরণস্বরূপ, 100% মানে View-এর প্রস্থের 100%।

ScaleAnimation

ScaleAnimation View-কে pivotX/pivotY বিন্দুর সাপেক্ষে স্কেল করে। fromXScale=1.0, toXScale=2.0 প্রস্থ দ্বিগুণ করে। প্যারামিটার pivotType নির্ধারণ করে পিভট কীসের সাপেক্ষে গণনা করা হয়: self, parent বা absolute। স্কেল অ্যানিমেশন View-এর প্রকৃত মাত্রা পরিবর্তন করে না — শুধু রেন্ডারিং পরিবর্তন করে।

RotateAnimation

RotateAnimation View-কে একটি পিভট বিন্দুর চারপাশে fromDegrees থেকে toDegrees পর্যন্ত কোণে ঘোরায়। কোণ ডিগ্রিতে পরিমাপ করা হয়: 0 আসল অবস্থান, 360 পূর্ণ ঘূর্ণন। অসীম ঘূর্ণনের জন্য, repeatCount=INFINITE ব্যবহার করুন।

View Animation বনাম Property Animation

View Animation এবং Property Animation (Animator) এর মধ্যে পার্থক্য Android অ্যানিমেশন আর্কিটেকচারে একটি মৌলিক পার্থক্য। View Animation শুধু রেন্ডারিংয়ে কাজ করে, যখন Property Animation setter পদ্ধতির মাধ্যমে প্রকৃত অবজেক্ট বৈশিষ্ট্য পরিবর্তন করে, যা লেআউট আপডেটের দিকে নিয়ে যায়।

মাপকাঠিView AnimationProperty Animation
API স্তরAPI 1+ (অবচিত)API 11+ (সুপারিশকৃত)
কী অ্যানিমেট করেView রেন্ডারিং (canvas)অবজেক্ট বৈশিষ্ট্য (setter)
অ্যানিমেশনের পর ক্লিকমূল অবস্থানেনতুন অবস্থানে
অ্যানিমেশনের ধরন4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsপরিবর্তন করে নাsetLayoutParams এর মাধ্যমে পরিবর্তন করে
কর্মক্ষমতাউচ্চ (শুধু canvas)মধ্যম (setter এর উপর নির্ভর)

অ্যানিমেশনের XML কনফিগারেশন

View Animation সাধারণত res/anim/ এ XML ফাইলে মূল উপাদান (AnimationSet) বা চারটি প্রকারের একটি দিয়ে সংজ্ঞায়িত করা হয়। AnimationSet সাধারণ প্যারামিটার যেমন startOffset, duration, interpolator সহ অ্যানিমেশন একত্রিত করতে দেয়।

xml
<!-- res/anim/bounce.xml -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/bounce_interpolator">

    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration="600" />

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.3"
        android:duration="600" />
</set>

XML ফাইল AnimationUtils.loadAnimation() এর মাধ্যমে লোড করা হয়। Interpolator নির্ধারণ করে কীভাবে প্যারামিটার সময়ের সাথে পরিবর্তিত হয়: accelerate, decelerate, bounce, overshoot। কাস্টম Interpolator XML রিসোর্স @anim/interpolator_name এর মাধ্যমে তৈরি করা হয়।

সাধারণ বৈশিষ্ট্য

সব Tween অ্যানিমেশন বৈশিষ্ট্যগুলি সমর্থন করে: duration (ms), startOffset (শুরুতে বিলম্ব), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator। fillAfter বৈশিষ্ট্য নির্ধারণ করে যে View সম্পূর্ণ হওয়ার পর অ্যানিমেশনের চূড়ান্ত অবস্থায় থাকে কিনা।

Kotlin-এ কোড উদাহরণ

যদিও অ্যানিমেশন সাধারণত XML-এ সংজ্ঞায়িত করা হয়, সেগুলি Kotlin ব্যবহার করে প্রোগ্রামেটিকভাবেও তৈরি করা যেতে পারে। প্রোগ্রামেটিক পদ্ধতি গতিশীল প্যারামিটারের জন্য দরকারী: স্বচ্ছতার মান স্থিরভাবে সংজ্ঞায়িত না হয়ে অ্যাপ্লিকেশন অবস্থার উপর নির্ভর করে।

kotlin
// Kotlin-এ প্রোগ্রামেটিকভাবে AlphaAnimation তৈরি করা
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.View

fun View.fadeOut(duration: Long = 500L, onEnd: () -> Unit = {}) {
    val animation = AlphaAnimation(1.0f, 0.0f).apply {
        this.duration = duration
        fillAfter = true
        setAnimationListener(object : Animation.AnimationListener {
            override fun onAnimationEnd(animation: Animation?) { onEnd() }
            override fun onAnimationStart(animation: Animation?) {}
            override fun onAnimationRepeat(animation: Animation?) {}
        })
    }
    startAnimation(animation)
}

// XML থেকে অ্যানিমেশন লোড করা
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — অ্যানিমেশনের সংমিশ্রণ
val set = AnimationSet(true).apply {
    addAnimation(TranslateAnimation(0f, 200f, 0f, 0f).apply { duration = 400 })
    addAnimation(RotateAnimation(0f, 360f).apply {
        duration = 400
        pivotX = view.width / 2f
        pivotY = view.height / 2f
    })
}
view.startAnimation(set)

startAnimation() পদ্ধতি View-এর রেন্ডারিং সারিতে অ্যানিমেশন যোগ করে। বাতিল করতে clearAnimation() ব্যবহার করুন। গুরুত্বপূর্ণ: fillAfter=true LayoutParams পরিবর্তন করে না — যখন startAnimation আবার কল করা হয়, অ্যানিমেশন View-এর আসল অবস্থা থেকে শুরু হয়, শেষ রেন্ডার করা অবস্থা থেকে নয়।

কখন View Animation ব্যবহার করবেন?

View Animation 2026 সালে প্রয়োগের একটি সংকীর্ণ পরিধি রয়েছে: Android 4.x (API 16-19) এর জন্য সমর্থন যেখানে Property Animation অস্থিরভাবে কাজ করতে পারে; সরল আবির্ভাব/অদৃশ্য প্রভাব যার LayoutParams পরিবর্তনের প্রয়োজন নেই; অ্যানিমেশন যেখানে ক্লিক অমিল গুরুত্বপূর্ণ নয় (যেমন, পটভূমি উপাদান)। অন্যান্য সব ক্ষেত্রে, Google ObjectAnimator বা AnimatorSet এ স্যুইচ করার সুপারিশ করে।

Android ডেভেলপারদের মতে, Property Animation মেমরিতে 15-20% বেশি কার্যকর কারণ এটি মধ্যবর্তী canvas ফ্রেম তৈরি করে না। View Animation থেকে Property Animation-এ স্যুইচ করাও ক্লিক অমিল সমস্যা দূর করে: অ্যানিমেশনের পর View তার নতুন অবস্থানে স্পর্শ গ্রহণ করে।

সচরাচর জিজ্ঞাসিত প্রশ্ন

কীভাবে View Animation, Property Animation থেকে আলাদা?

View Animation শুধু View-এর রেন্ডারিং পরিবর্তন করে — অ্যানিমেশনের পর, View স্পর্শ ইভেন্টের জন্য তার মূল অবস্থানে থাকে। Property Animation অবজেক্টের প্রকৃত বৈশিষ্ট্য পরিবর্তন করে, যা LayoutParams আপডেট করে এবং নতুন অবস্থানে ক্লিক সঠিকভাবে পরিচালনা করে।

কেন View Animation কে অবচিত বলে মনে করা হয়?

Google Android 3.0 (API 11) থেকে View Animation-কে অবচিত ঘোষণা করেছে। কারণ হল ক্লিক অমিল (click mismatch) এবং নির্বিচারে অবজেক্ট বৈশিষ্ট্য অ্যানিমেট করতে অক্ষমতা। Property Animation এই সমস্যাগুলি সমাধান করে এবং সব নতুন প্রজেক্টের জন্য সুপারিশ করা হয়।

বাটন অ্যানিমেশনের জন্য কি View Animation ব্যবহার করা যেতে পারে?

এটি ব্যবহার করা যেতে পারে কিন্তু সুপারিশ করা হয় না। TranslateAnimation এর পর একটি বাটন নতুন অবস্থানে প্রদর্শিত হবে, কিন্তু ক্লিক মূল অবস্থানে নিবন্ধিত হবে। বাটনের জন্য, Property Animation বা Jetpack Compose-এ AnimatedVisibility সহ composable ব্যবহার করুন।

প্রোগ্রামেটিকভাবে View Animation কীভাবে বাতিল করবেন?

view.clearAnimation() কল করুন। যদি অ্যানিমেশন fillAfter=true দিয়ে শুরু করা হয়, View তার চূড়ান্ত অবস্থায় থাকবে। মূল অবস্থায় ফিরে যেতে বাধ্য করার জন্য, clearAnimation() এবং invalidate() কল করুন।

সারসংক্ষেপ

  • View Animation — Android-এ চার প্রকারের একটি পুরনো Tween অ্যানিমেশন সিস্টেম: Alpha, Translate, Scale, Rotate
  • XML মার্কআপ res/anim/ এ , , , উপাদান এবং মূল সহ
  • AnimationSet সাধারণ startOffset, duration, interpolator সহ অ্যানিমেশন একত্রিত করে
  • ক্লিক অমিল — অ্যানিমেশনের পর View স্পর্শ ইভেন্টের জন্য মূল অবস্থানে থাকে
  • Property Animation — ObjectAnimator, AnimatorSet এর মাধ্যমে আধুনিক প্রতিস্থাপন, বাস্তব বৈশিষ্ট্যের সাথে কাজ করে
  • fillAfter View-কে চূড়ান্ত অবস্থায় রাখে কিন্তু LayoutParams পরিবর্তন করে না
  • মাইগ্রেশন Property Animation-এ ক্লিক অমিল দূর করে এবং কর্মক্ষমতা 15-20% উন্নত করে

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন