View Animation — Android API 1+ की एक पुरानी एनिमेशन प्रणाली है जो Tween Animation (Alpha, Translate, Scale, Rotate) के माध्यम से View-ऑब्जेक्ट्स के साथ काम करती है। Google सभी नए प्रोजेक्ट्स के लिए Property Animation (Animator) की सिफारिश करता है। यह लेख सिद्धांतों, प्रकारों, XML मार्कअप और छोड़ने के कारणों की व्याख्या करता है।
मुख्य बिंदु
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 मुख्य फ्रेमों के “बीच” की एनिमेशन है: आप प्रारंभिक और अंतिम स्थिति निर्धारित करते हैं, और सिस्टम मध्यवर्ती फ्रेमों की गणना करता है। Android चार मानक प्रकार प्रदान करता है, प्रत्येक अपने स्वयं के पैरामीटर सेट के साथ।
AlphaAnimation View की पारदर्शिता को fromAlpha से toAlpha तक बदलता है। मान 0.0 (पूरी तरह पारदर्शी) से 1.0 (पूरी तरह दृश्यमान) तक होते हैं। डिफ़ॉल्ट रूप से, एनिमेशन 300 ms तक चलता है। पैरामीटर fillAfter=true View को अंतिम पारदर्शिता स्थिति में छोड़ देता है।
<!-- 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 View को प्रारंभिक स्थिति (fromXDelta, fromYDelta) से अंतिम स्थिति (toXDelta, toYDelta) तक ले जाता है। मान पिक्सेल, पैरेंट के प्रतिशत या View के प्रतिशत में निर्दिष्ट किए जाते हैं। उदाहरण के लिए, 100% का अर्थ View की चौड़ाई का 100% है।
ScaleAnimation View को pivotX/pivotY बिंदु के सापेक्ष स्केल करता है। fromXScale=1.0, toXScale=2.0 चौड़ाई को दोगुना करता है। पैरामीटर pivotType यह निर्धारित करता है कि पिवट किसके सापेक्ष गणना की जाती है: self, parent या absolute। स्केल एनिमेशन View के वास्तविक आयामों को नहीं बदलता — केवल रेंडरिंग को बदलता है।
RotateAnimation View को एक पिवट बिंदु के चारों ओर fromDegrees से toDegrees तक के कोण पर घुमाता है। कोण डिग्री में मापा जाता है: 0 मूल स्थिति है, 360 पूर्ण घूर्णन है। अनंत घूर्णन के लिए, repeatCount=INFINITE का उपयोग करें।
View Animation और Property Animation (Animator) के बीच का अंतर Android एनिमेशन आर्किटेक्चर में एक मूलभूत अंतर है। View Animation केवल रेंडरिंग पर काम करता है, जबकि Property Animation setter विधियों के माध्यम से वास्तविक ऑब्जेक्ट गुणों को बदलता है, जिससे लेआउट अपडेट होता है।
| मानदंड | View Animation | Property Animation |
|---|---|---|
| API स्तर | API 1+ (पदावनत) | API 11+ (अनुशंसित) |
| क्या एनिमेट करता है | View रेंडरिंग (canvas) | ऑब्जेक्ट गुण (setter) |
| एनिमेशन के बाद क्लिक | मूल स्थिति पर | नई स्थिति पर |
| एनिमेशन प्रकार | 4 Tween + AnimationSet | ObjectAnimator, ValueAnimator, AnimatorSet |
| LayoutParams | नहीं बदलता | setLayoutParams के माध्यम से बदलता है |
| प्रदर्शन | उच्च (केवल canvas) | मध्यम (setter पर निर्भर) |
View Animation आमतौर पर res/anim/ में 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 पूरा होने के बाद एनिमेशन की अंतिम स्थिति में रहता है या नहीं।
हालाँकि एनिमेशन आमतौर पर XML में परिभाषित किए जाते हैं, उन्हें 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 का 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 केवल View की रेंडरिंग बदलता है — एनिमेशन के बाद, View स्पर्श घटनाओं के लिए अपनी मूल स्थिति पर रहता है। Property Animation ऑब्जेक्ट के वास्तविक गुणों को बदलता है, जो LayoutParams को अपडेट करता है और नई स्थिति में क्लिक को सही ढंग से संभालता है।
Google ने Android 3.0 (API 11) से View Animation को पदावनत घोषित किया। कारण क्लिक बेमेल (click mismatch) और मनमाने ऑब्जेक्ट गुणों को एनिमेट करने में असमर्थता है। Property Animation इन समस्याओं को हल करता है और सभी नए प्रोजेक्ट्स के लिए अनुशंसित है।
इसका उपयोग किया जा सकता है लेकिन अनुशंसित नहीं है। TranslateAnimation के बाद एक बटन नए स्थान पर दिखाई देगा, लेकिन क्लिक मूल स्थिति पर ही पंजीकृत होंगे। बटन के लिए, Property Animation या Jetpack Compose में AnimatedVisibility के साथ composable का उपयोग करें।
view.clearAnimation() को कॉल करें। यदि एनिमेशन fillAfter=true के साथ शुरू किया गया था, तो View अपनी अंतिम स्थिति में रहेगा। मूल स्थिति में वापस जाने के लिए, clearAnimation() और invalidate() को कॉल करें।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें