एक ऐनिमेशन संसाधन, दो तरह के ऐनिमेशन में से एक को परिभाषित कर सकता है:
- प्रॉपर्टी ऐनिमेशन
- एक तय अवधि में ऑब्जेक्ट की प्रॉपर्टी वैल्यू में बदलाव करके, ऐनिमेशन बनाता है
Animator
के साथ. - व्यू ऐनिमेशन
-
व्यू ऐनिमेशन फ़्रेमवर्क की मदद से, दो तरह के ऐनिमेशन किए जा सकते हैं:
- ट्वीन ऐनिमेशन: यह एक ही इमेज पर कई तरह के बदलाव करके ऐनिमेशन बनाता है
Animation
के साथ. - फ़्रेम ऐनिमेशन: इमेज का क्रम दिखाकर ऐनिमेशन बनाता है
AnimationDrawable
के साथ.
- ट्वीन ऐनिमेशन: यह एक ही इमेज पर कई तरह के बदलाव करके ऐनिमेशन बनाता है
प्रॉपर्टी ऐनिमेशन
एक्सएमएल में तय किया गया एक ऐनिमेशन, जो टारगेट ऑब्जेक्ट की प्रॉपर्टी में बदलाव करता है, जैसे कि समय की दी गई समयावधि में बैकग्राउंड का रंग या ऐल्फ़ा वैल्यू.
- फ़ाइल की जगह:
res/animator/filename.xml
फ़ाइल नाम का इस्तेमाल, रिसॉर्स आईडी के तौर पर किया जाता है.- कंपाइल किए गए संसाधन डेटा टाइप:
ValueAnimator
,ObjectAnimator
, के लिए रिसॉर्स पॉइंटर, याAnimatorSet
- संसाधन का रेफ़रंस:
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Java-आधारित या Kotlin कोड में:
R.animator.filename
एक्सएमएल में:@[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>
एलिमेंट. - एलिमेंट:
- उदाहरण:
-
एक्सएमएल फ़ाइल को
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>इस ऐनिमेशन को चलाने के लिए, अपने कोड में मौजूद एक्सएमएल संसाधनों को
AnimatorSet
ऑब्जेक्ट में इनफ़्लेट करें. इसके बाद, सभी ऐनिमेशन के लिए टारगेट ऑब्जेक्ट सेट करें क्लिक करें.setTarget()
को कॉल करने से,AnimatorSet
के सभी बच्चों के लिए एक ही टारगेट ऑब्जेक्ट सेट हो जाता है. ऐसा करना आसान होता है. यह कोड बताता है कि इसे कैसे किया जा सकता है: - यह भी देखें:
-
- प्रॉपर्टी के ऐनिमेशन की खास जानकारी
- उदाहरण के लिए एपीआई डेमो प्रॉपर्टी ऐनिमेशन सिस्टम इस्तेमाल करने का तरीका
ऐनिमेशन देखें
व्यू ऐनिमेशन फ़्रेमवर्क, ट्वीन और फ़्रेम-दर-फ़्रेम ऐनिमेशन, दोनों के साथ काम करता है. ये दोनों एलान किए जाते हैं एक्सएमएल में. नीचे दिए सेक्शन में, दोनों तरीकों का इस्तेमाल करने का तरीका बताया गया है.
ट्वीन ऐनिमेशन
एक्सएमएल में तय किया गया ऐसा ऐनिमेशन जो ग्राफ़िक पर ट्रांज़िशन करता है, जैसे कि घुमाना, फ़ेडिंग, मूविंग, और स्ट्रेचिंग.
- फ़ाइल की जगह:
res/anim/filename.xml
फ़ाइल नाम का इस्तेमाल, रिसॉर्स आईडी के तौर पर किया जाता है.- कंपाइल किए गए संसाधन डेटा टाइप:
Animation
के लिए रिसॉर्स पॉइंटर- संसाधन का रेफ़रंस:
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Java में:
R.anim.filename
एक्सएमएल में:@[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>
एलिमेंट शामिल हैं). - एलिमेंट:
- उदाहरण:
-
एक्सएमएल फ़ाइल को
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
और ऐनिमेशन शुरू करता है: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); - यह भी देखें:
इंटरपोलेटर
इंटरपोलेटर एक्सएमएल में तय किया गया एक ऐनिमेशन मॉडिफ़ायर होता है, जो ऐनिमेशन. इससे आपके मौजूदा ऐनिमेशन इफ़ेक्ट को तेज़, कम, दोहराया जा सकता है, बाउंस होना वगैरह
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
के लिए साइकल चलाना. ऐसा करने के लिए, आपको
किसी एक्सएमएल फ़ाइल में अपना खुद का इंटरपोलेटर संसाधन बनाएं.
- फ़ाइल की जगह:
res/anim/filename.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
को लागू करने पर, जब एक्सएमएल में दी गई जानकारी का एक नाम है, जो अंग्रेज़ी के छोटे अक्षर से शुरू होता है. - उदाहरण:
-
एक्सएमएल फ़ाइल को
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"
/>यह ऐनिमेशन एक्सएमएल, इंटरपोलेटर पर लागू होता है:
<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" />
फ़्रेम ऐनिमेशन
एक्सएमएल में तय किया गया ऐनिमेशन, जिसमें इमेज का कोई क्रम दिखाया जाता है, जैसे कि फ़िल्म.
- फ़ाइल की जगह:
res/drawable/filename.xml
फ़ाइल नाम का इस्तेमाल, रिसॉर्स आईडी के तौर पर किया जाता है.- कंपाइल किए गए संसाधन डेटा टाइप:
AnimationDrawable
के लिए रिसॉर्स पॉइंटर- संसाधन का रेफ़रंस:
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Java में:
R.drawable.filename
एक्सएमएल में:@[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> - एलिमेंट:
- उदाहरण:
-
एक्सएमएल फ़ाइल को
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
के लिए बैकग्राउंड के तौर पर सेट करता है, फिर ऐनिमेशन चलाएं: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()
;
} - यह भी देखें: