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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں