व्यू पर ट्वीड ऐनिमेशन करने के लिए, व्यू ऐनिमेशन सिस्टम का इस्तेमाल किया जा सकता है. ट्वीन ऐनिमेशन इस तरह की जानकारी के साथ एनिमेशन की गणना करता है: प्रारंभ बिंदु, समाप्ति बिंदु, आकार, घूर्णन, और एनिमेशन के अन्य सामान्य पहलू देखे जा सकते हैं.
ट्वीन ऐनिमेशन, कई आसान बदलाव कर सकता है. जैसे- पोज़िशन, साइज़, रोटेशन,
और पारदर्शिता) दिखाई गई है. इसलिए, अगर आपके पास TextView
ऑब्जेक्ट है, तो टेक्स्ट को हिलाया जा सकता है, उसे घुमाया जा सकता है, बढ़ाया जा सकता है या उसे छोटा किया जा सकता है. अगर इसमें
बैकग्राउंड की इमेज, टेक्स्ट के साथ बैकग्राउंड इमेज बदल जाएगी. animation package
ट्वीन ऐनिमेशन में इस्तेमाल की जाने वाली सभी क्लास उपलब्ध कराता है.
ऐनिमेशन निर्देशों का क्रम ट्वीन ऐनिमेशन को परिभाषित करता है, जिसे एक्सएमएल या
Android कोड. लेआउट परिभाषित करने की तरह ही, एक्सएमएल फ़ाइल का सुझाव दिया जाता है, क्योंकि यह पढ़ने में आसान होती है,
ये ऐनिमेशन को हार्ड-कोड करने की सुविधा की तुलना में दोबारा इस्तेमाल किया जा सकता है और बदला भी जा सकता है. नीचे दिए गए उदाहरण में, हमने एक्सएमएल का इस्तेमाल किया है. (पाने वाला
एक्सएमएल के बजाय, अपने ऐप्लिकेशन कोड में ऐनिमेशन तय करने के बारे में ज़्यादा जानने के लिए,
AnimationSet
क्लास और अन्य Animation
सब-क्लास.)
ऐनिमेशन निर्देश, आपके हिसाब से बदलाव तय करते हैं कि वे क्या है और उन्हें लागू होने में कितना समय लगेगा. ट्रांसफ़ॉर्मेशन ऐक्शन एक क्रम में या एक साथ हो सकते हैं - उदाहरण के लिए, TextView के कॉन्टेंट को बाएं से दाएं ले जाकर फिर से घुमाएं 180 डिग्री, या आप टेक्स्ट को साथ-साथ स्थानांतरित और घुमा सकते हैं. हर ट्रांसफ़ॉर्मेशन ऐक्शन को उस बदलाव के लिए खास पैरामीटर का सेट (साइज़ के लिए शुरुआती साइज़ और आखिर का साइज़ रोटेशन के लिए शुरुआती कोण और आखिरी कोण वगैरह) के साथ-साथ कुछ पैरामीटर (उदाहरण के लिए, शुरू होने का समय और अवधि). कई बदलाव लाने में साथ-साथ, उन्हें शुरुआत का एक ही समय दें; उन्हें क्रम के हिसाब से बनाने के लिए, शुरू होने के समय की गणना करें. और पिछले बदलाव की अवधि को जोड़कर.
ऐनिमेशन एक्सएमएल फ़ाइल आपके Android की res/anim/
डायरेक्ट्री में मौजूद है
प्रोजेक्ट. फ़ाइल में एक रूट एलिमेंट होना चाहिए: एलिमेंट में एक ही रूट एलिमेंट होगा
<alpha>
, <scale>
, <translate>
,
<rotate>
, इंटरपोलेटर एलिमेंट या <set>
एलिमेंट, जिसमें होल्ड हो
इन एलिमेंट के ग्रुप (जिसमें एक और <set>
शामिल हो सकता है). डिफ़ॉल्ट रूप से, सभी
ऐनिमेशन निर्देश साथ-साथ लागू किए जाते हैं. उन्हें क्रम से लगाने के लिए, आपको
startOffset
एट्रिब्यूट की वैल्यू सबमिट करें, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है.
ApiDemos में से एक के नीचे दिए गए एक्सएमएल का इस्तेमाल, स्ट्रेच करने, फिर साथ-साथ स्पिन और ऑब्जेक्ट को घुमा सकते हैं.
<set 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/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
स्क्रीन कोऑर्डिनेट (इस उदाहरण में इस्तेमाल नहीं किए गए हैं) के ऊपर बाएं कोने में (0,0) हैं, और दाईं ओर जाएँ.
कुछ वैल्यू, जैसे कि pivotX, को ऑब्जेक्ट के सापेक्ष या पैरंट. आपको जो चाहिए उसके लिए सही फ़ॉर्मैट का इस्तेमाल करें. जैसे, "माता-पिता के मुकाबले 50% मामलों में "50" का इस्तेमाल करना चाहिए, या "50%" 50% की बढ़ोतरी करते हैं.
आपके पास Interpolator
असाइन करके यह तय करने का विकल्प है कि समय के साथ ट्रांसफ़ॉर्मेशन को कैसे लागू किया जाए. Android में कई इंटरपोलेटर सब-क्लास शामिल हैं, जो
अलग-अलग स्पीड कर्व की जानकारी दें: उदाहरण के लिए, AccelerateInterpolator
ट्रांसफ़ॉर्मेशन को बताता है कि उसकी स्पीड धीमी हो और उसकी स्पीड तेज़ हो जाए. हर एक का एक विशेषता मान होता है, जो
को एक्सएमएल में लागू किया जाएगा.
इस एक्सएमएल को res/anim/
में hyperspace_jump.xml
के तौर पर सेव किया गया है
नीचे दिया गया कोड इसका रेफ़रंस देगा और इसे लेआउट से ImageView
ऑब्जेक्ट पर लागू करेगा.
Kotlin
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation -> findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation) }
Java
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);
startAnimation()
के विकल्प के तौर पर, आपके पास
ऐनिमेशन को
में दिखाएं, फिर ऐनिमेशन को Animation.setStartTime()
वाले व्यू को असाइन करें.View.setAnimation()
एक्सएमएल सिंटैक्स, उपलब्ध टैग, और एट्रिब्यूट के बारे में ज़्यादा जानकारी के लिए, ऐनिमेशन रिसॉर्स देखें.
ध्यान दें: आपका ऐनिमेशन चाहे किसी भी तरह से ट्रांसफ़र हो या उसका साइज़ बदले, आपके ऐनिमेशन को होल्ड करने वाले व्यू की सीमा, उसे अडजस्ट करने के लिए अपने-आप अडजस्ट नहीं होगी. फिर भी, ऐनिमेशन को व्यू की सीमा से बाहर ले जाया जाएगा और क्लिप नहीं बनाई जाएगी. हालांकि, अगर ऐनिमेशन मूल व्यू की सीमाओं से ज़्यादा हो जाता है, तो क्लिपिंग हो जाएगी.