कुछ स्थितियों में, इमेज को ऐनिमेट करना ज़रूरी होता है. यह तब उपयोगी होता है, जब आपको अपनी कई इमेज से मिलकर बना कस्टम लोडिंग ऐनिमेशन या अगर आपको उपयोगकर्ता की इमेज के बाद आइकॉन को मॉर्फ़ करना है, तो कार्रवाई. ड्रॉएबल को ऐनिमेट करने के लिए, Android दो विकल्प देता है.
पहला विकल्प, AnimationDrawable
का इस्तेमाल करना है. यह
से आपको कई स्टैटिक
ड्रॉ करने लायक फ़ाइलें, जो एक बार में एक डिसप्ले
एक ऐनिमेशन बनाएं. दूसरा विकल्प यह है कि
AnimatedVectorDrawable
, इसकी मदद से प्रॉपर्टी को ऐनिमेट किया जा सकता है
ड्रॉ करने लायक वेक्टर का.
ऐनिमेशनड्रॉबल का इस्तेमाल करें
ऐनिमेशन बनाने का एक तरीका यह है कि ड्रॉ करने लायक रिसॉर्स का क्रम लोड किया जाए, जैसे कि रोल का कोई रोल.
AnimationDrawable
क्लास
इस तरह के ड्रॉ करने लायक ऐनिमेशन का आधार है.
AnimationDrawable
का इस्तेमाल करके, अपने कोड में ऐनिमेशन के फ़्रेम तय किए जा सकते हैं
क्लास API का इस्तेमाल कर सकते हैं, लेकिन एक ही एक्सएमएल फ़ाइल से उन्हें आसानी से परिभाषित किया जा सकता है, जिसमें
उस ऐनिमेशन का हिस्सा होते हैं. इस तरह के ऐनिमेशन के लिए एक्सएमएल फ़ाइल res/drawable/
में रखी जाती है
डायरेक्ट्री में जोड़ा जा सकता है. इस मामले में, निर्देश
में दिखाई गई है.
एक्सएमएल फ़ाइल में रूट नोड के तौर पर <animation-list>
एलिमेंट और
चाइल्ड <item>
नोड की सीरीज़ जिसमें से हर एक फ़्रेम को परिभाषित करता है—एक ड्रॉ करने लायक संसाधन
और उसकी अवधि. यहां Drawable
ऐनिमेशन के लिए एक्सएमएल फ़ाइल का एक उदाहरण दिया गया है:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <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>
यह एनिमेशन तीन फ़्रेम के लिए चलता है. android:oneshot
को सेट किया जा रहा है
लिस्ट की एट्रिब्यूट की मदद से true
को एक बार साइकल चलाना और फिर 'रोकें' बटन को दबाकर रखना
नज़र आ रहे हैं. अगर android:oneshot
को false
पर सेट किया जाता है, तो
ऐनिमेशन लूप में चला जाता है.
अगर इस एक्सएमएल को res/drawable/
में rocket_thrust.xml
के तौर पर सेव किया जाता है
डायरेक्ट्री में जोड़ा है, तो आप इसे View
में बैकग्राउंड इमेज के रूप में जोड़ सकते हैं और फिर
इसे चलाने के लिए start()
को कॉल करें. यहां एक ऐसी गतिविधि का उदाहरण दिया गया है जिसमें ऐनिमेशन को
ImageView
और इसके बाद ऐनिमेशन का इस्तेमाल किया
स्क्रीन टच होने पर:
Kotlin
private lateinit var rocketAnimation: AnimationDrawable override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val rocketImage = findViewById<ImageView>(R.id.rocket_image).apply { setBackgroundResource(R.drawable.rocket_thrust) rocketAnimation = background as AnimationDrawable } rocketImage.setOnClickListener({ rocketAnimation.start() }) }
Java
AnimationDrawable rocketAnimation; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); rocketImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { rocketAnimation.start(); } }); }
यह ध्यान रखना ज़रूरी है कि start()
तरीके का इस्तेमाल करके
आपकी onCreate()
वाली सेटिंग के दौरान, AnimationDrawable
को कॉल नहीं किया जा सकता
Activity
क्योंकि AnimationDrawable
अभी तक पूरी तरह से
विंडो. इंटरैक्शन की आवश्यकता के बिना, ऐनिमेशन को तुरंत चलाने के लिए, उसे
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
तरीका होता है. इसे तब कॉल किया जाता है, जब Android स्क्रीन पर व्यू दिखाता है.onStart()
Activity
एक्सएमएल सिंटैक्स, उपलब्ध टैग, और एट्रिब्यूट के बारे में ज़्यादा जानकारी के लिए, ऐनिमेशन संसाधन देखें.
एनिमेट होने वाले वेक्टरड्रॉएबल का इस्तेमाल करें
ड्रॉ करने लायक वेक्टर
ड्रॉ करने लायक एक तरह का ऐप्लिकेशन है. इसे बिना पिक्सलेट या धुंधला किए बढ़ाया जा सकता है. कॉन्टेंट बनाने
AnimatedVectorDrawable
क्लास—और
AnimatedVectorDrawableCompat
की मदद से, पुराने सिस्टम के साथ काम करने की सुविधा मिलती है. इस सुविधा की मदद से, यह ऐनिमेशन किया जा सकता है
ड्रॉए जा सकने वाले वेक्टर के गुण, जैसे कि उसे घुमाना या पाथ डेटा को मॉर्फ़ करना या उसे मॉर्फ़ करना
अपलोड करें.
आम तौर पर, तीन एक्सएमएल फ़ाइलों में ऐनिमेशन वाले वेक्टर ड्रॉ करने की सुविधा तय की जाती है:
- ऐसा वेक्टर जिसमें
<vector>
एलिमेंट शामिल हैres/drawable/
. - एक ऐनिमेशन वाला वेक्टर, जिसमें
<animated-vector>
एलिमेंट शामिल हैres/drawable/
. <objectAnimator>
एलिमेंट वाले एक या उससे ज़्यादा ऑब्जेक्ट ऐनिमेशनres/animator/
.
ऐनिमेशन वाले वेक्टर ड्रॉ करने की सुविधा, <group>
और
<path>
एलिमेंट. <group>
एलिमेंट
पाथ या सबग्रुप शामिल हैं और <path>
एलिमेंट, ड्रॉ किए जाने वाले पाथ के बारे में जानकारी देता है.
ऐनिमेशन के लिए, ड्रॉ करने लायक कोई वेक्टर तय करने पर, android:name
का इस्तेमाल करें
एट्रिब्यूट की मदद से ग्रुप और पाथ को यूनीक नाम दें, ताकि आप उन्हें अपने ऐनिमेटर से देख सकें
परिभाषाएं. उदाहरण के लिए:
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600"> <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:name="v" android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector>
ड्रॉ करने लायक ऐनिमेटेड वेक्टर की परिभाषा उनके नाम से:
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vectordrawable" > <target android:name="rotationGroup" android:animation="@animator/rotation" /> <target android:name="v" android:animation="@animator/path_morph" /> </animated-vector>
ऐनिमेशन की परिभाषाओं से पता चलता है कि
ObjectAnimator
या
AnimatorSet
ऑब्जेक्ट. कॉन्टेंट बनाने
इस उदाहरण में मौजूद पहला ऐनिमेटर, टारगेट ग्रुप को 360 डिग्री घुमाता है:
<objectAnimator android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" />
इस उदाहरण में दूसरा ऐनिमेटर, ड्रॉ करने लायक वेक्टर के पाथ को एक आकार से मॉर्फ़ करता है. कोई दूसरा. पाथ को मॉर्फ़ करने की सुविधा के साथ काम करना चाहिए: उनमें कमांड की संख्या बराबर होनी चाहिए और हर कमांड के लिए पैरामीटर की संख्या समान होनी चाहिए.
<set xmlns:android="http://schemas.android.com/apk/res/android"> <objectAnimator android:duration="3000" android:propertyName="pathData" android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z" android:valueTo="M300,70 l 0,-70 70,0 0,140 -70,0 z" android:valueType="pathType" /> </set>
इससे मिला AnimatedVectorDrawable
:
AnimatedVectorDrawable
.ऐनिमेशन वाले वेक्टर ड्रॉएबल (एवीडी) की झलक
Android Studio में ऐनिमेटेड वेक्टर ड्रॉ करने लायक टूल से आपको ऐनिमेशन की झलक देखने की सुविधा मिलती है
ड्रॉ करने लायक संसाधन शामिल हैं. इस टूल की मदद से, <animation-list>
,
इसमें <animated-vector>
, और <animated-selector>
संसाधन
Android Studio की मदद से, अपनी पसंद के मुताबिक बनाए गए ऐनिमेशन को आसानी से बेहतर बनाया जा सकता है.
ज़्यादा जानकारी के लिए, एपीआई का रेफ़रंस देखें
AnimatedVectorDrawable
.