ऐनिमेशन, विज़ुअल संकेत जोड़ सकते हैं. इनसे उपयोगकर्ताओं को यह पता चलता है कि आपके ऐप्लिकेशन में क्या हो रहा है. ये खास तौर पर तब काम आते हैं, जब यूज़र इंटरफ़ेस (यूआई) की स्थिति बदलती है. जैसे, जब नया कॉन्टेंट लोड होता है या नई कार्रवाइयां उपलब्ध होती हैं. ऐनिमेशन से आपके ऐप्लिकेशन को एक शानदार लुक मिलता है. इससे ऐप्लिकेशन की क्वालिटी बेहतर दिखती है और उसे इस्तेमाल करने का अनुभव भी बेहतर होता है.
Android में अलग-अलग तरह के ऐनिमेशन के लिए, अलग-अलग Animation API मौजूद हैं. इस दस्तावेज़ में, यूज़र इंटरफ़ेस (यूआई) में मोशन जोड़ने के अलग-अलग तरीकों के बारे में खास जानकारी दी गई है.
ऐनिमेशन का इस्तेमाल कब करना चाहिए, इस बारे में बेहतर तरीके से जानने के लिए, मोशन के बारे में मटीरियल डिज़ाइन गाइड भी देखें.
बिट मैप को ऐनिमेट करना
पहली इमेज. ऐनिमेट किया गया ड्रॉएबल.
किसी आइकॉन या इलस्ट्रेशन जैसे बिटमैप ग्राफ़िक को ऐनिमेट करने के लिए, ड्रॉएबल ऐनिमेशन एपीआई का इस्तेमाल करें. आम तौर पर, ये ऐनिमेशन ड्रॉ करने लायक संसाधन के साथ स्टैटिक तौर पर तय किए जाते हैं. हालांकि, रनटाइम के दौरान भी ऐनिमेशन के काम करने का तरीका तय किया जा सकता है.
उदाहरण के लिए, उपयोगकर्ता को यह बताने का एक अच्छा तरीका है कि दो कार्रवाइयां एक-दूसरे से जुड़ी हैं. इसके लिए, 'चलाएं' बटन को ऐनिमेट करें, ताकि टैप करने पर वह 'रोकें' बटन में बदल जाए.
ज़्यादा जानकारी के लिए, ड्रॉएबल ग्राफ़िक को ऐनिमेट करना लेख पढ़ें.
यूज़र इंटरफ़ेस (यूआई) की विज़िबिलिटी और मोशन को ऐनिमेट करना
दूसरी इमेज. डायलॉग बॉक्स दिखने और गायब होने पर, एक हल्का ऐनिमेशन दिखता है. इससे यूज़र इंटरफ़ेस (यूआई) में होने वाला बदलाव कम अजीब लगता है.
जब आपको अपने लेआउट में व्यू की विज़िबिलिटी या पोज़िशन बदलनी हो, तो बेहतर होगा कि आप छोटे-छोटे ऐनिमेशन शामिल करें. इससे उपयोगकर्ता को यह समझने में मदद मिलती है कि यूज़र इंटरफ़ेस (यूआई) कैसे बदल रहा है.
मौजूदा लेआउट में व्यू को मूव करने, दिखाने या छिपाने के लिए, android.animation पैकेज में उपलब्ध प्रॉपर्टी ऐनिमेशन सिस्टम का इस्तेमाल किया जा सकता है. यह पैकेज, Android 3.0 (एपीआई लेवल 11) और इसके बाद के वर्शन में उपलब्ध है. ये एपीआई, आपके View ऑब्जेक्ट की प्रॉपर्टी को समय-समय पर अपडेट करते हैं. साथ ही, प्रॉपर्टी में बदलाव होने पर, व्यू को लगातार फिर से ड्रॉ करते हैं. उदाहरण के लिए, पोज़िशन प्रॉपर्टी बदलने पर, व्यू स्क्रीन पर एक जगह से दूसरी जगह मूव करता है. ऐल्फ़ा प्रॉपर्टी में बदलाव करने पर, व्यू फ़ेड इन या फ़ेड आउट होता है.
इन ऐनिमेशन को बनाने का सबसे आसान तरीका यह है कि अपने लेआउट पर ऐनिमेशन चालू करें. इससे, किसी व्यू के दिखने की सेटिंग बदलने पर, ऐनिमेशन अपने-आप लागू हो जाता है. ज़्यादा जानकारी के लिए, लेआउट के अपडेट अपने-आप ऐनिमेट होने की सुविधा देखें.
प्रॉपर्टी ऐनिमेशन सिस्टम का इस्तेमाल करके ऐनिमेशन बनाने का तरीका जानने के लिए, प्रॉपर्टी ऐनिमेशन की खास जानकारी पढ़ें. सामान्य ऐनिमेशन बनाने के लिए, ये पेज भी देखे जा सकते हैं:
फ़िज़िक्स पर आधारित मोशन
तीसरी इमेज. ObjectAnimator की मदद से बनाया गया ऐनिमेशन.
चौथी इमेज. फ़िज़िक्स पर आधारित एपीआई की मदद से बनाया गया ऐनिमेशन.
जब भी संभव हो, अपने ऐनिमेशन में रीयल-वर्ल्ड फ़िज़िक्स लागू करें, ताकि वे नैचुरल दिखें. उदाहरण के लिए, टारगेट बदलने पर उन्हें अपनी रफ़्तार बनाए रखनी चाहिए. साथ ही, किसी भी बदलाव के दौरान आसानी से ट्रांज़िशन करना चाहिए.
इस तरह के ऐनिमेशन बनाने के लिए, Android सपोर्ट लाइब्रेरी में फ़िज़िक्स पर आधारित ऐनिमेशन एपीआई शामिल हैं. ये एपीआई, फ़िज़िक्स के नियमों का इस्तेमाल करके आपके ऐनिमेशन को कंट्रोल करते हैं.
फ़िज़िक्स पर आधारित दो सामान्य ऐनिमेशन ये हैं:
फ़िज़िक्स पर आधारित नहीं होने वाले ऐनिमेशन, काफ़ी हद तक स्टैटिक होते हैं और उनकी अवधि तय होती है. जैसे, ObjectAnimator एपीआई की मदद से बनाए गए ऐनिमेशन. अगर टारगेट वैल्यू बदलती है, तो आपको टारगेट वैल्यू में बदलाव के समय ऐनिमेशन को रद्द करना होगा. साथ ही, नई वैल्यू को नई शुरुआती वैल्यू के तौर पर सेट करके, ऐनिमेशन को फिर से कॉन्फ़िगर करना होगा और नई टारगेट वैल्यू जोड़नी होगी. इस प्रोसेस की वजह से, ऐनिमेशन अचानक रुक जाता है और इसके बाद, वह अलग-अलग हिस्सों में बंटा हुआ दिखता है. जैसा कि तीसरी इमेज में दिखाया गया है.
फ़िज़िक्स पर आधारित ऐनिमेशन एपीआई, जैसे कि DynamicAnimation से बनाए गए ऐनिमेशन, फ़ोर्स से चलते हैं. टारगेट वैल्यू में बदलाव करने से, फ़ोर्स में बदलाव होता है. नया फ़ोर्स, मौजूदा रफ़्तार पर लागू होता है. इससे नए टारगेट पर लगातार ट्रांज़िशन होता है. इस प्रोसेस से, ज़्यादा नैचुरल दिखने वाला ऐनिमेशन बनता है. जैसा कि इमेज 4 में दिखाया गया है.
लेआउट में होने वाले बदलावों को ऐनिमेट करना
पांचवीं इमेज. ज़्यादा जानकारी दिखाने के लिए, लेआउट में बदलाव करके या नई गतिविधि शुरू करके, ऐनिमेशन दिखाया जा सकता है.
Android 4.4 (एपीआई लेवल 19) और इसके बाद के वर्शन पर, ट्रांज़िशन फ़्रेमवर्क का इस्तेमाल करके ऐनिमेशन बनाए जा सकते हैं. ऐसा तब किया जा सकता है, जब मौजूदा गतिविधि या फ़्रैगमेंट में लेआउट को बदला जाए. आपको बस यह बताना होगा कि लेआउट कहां से शुरू और कहां खत्म होगा. साथ ही, आपको किस तरह का ऐनिमेशन इस्तेमाल करना है. इसके बाद, सिस्टम दोनों लेआउट के बीच ऐनिमेशन को समझता है और उसे लागू करता है. इसका इस्तेमाल करके, पूरे यूज़र इंटरफ़ेस (यूआई) को बदला जा सकता है या कुछ व्यू को हटाया या बदला जा सकता है.
उदाहरण के लिए, जब उपयोगकर्ता ज़्यादा जानकारी देखने के लिए किसी आइटम पर टैप करता है, तो लेआउट को आइटम के ब्यौरे से बदला जा सकता है. इसके लिए, चित्र 5 में दिखाए गए ट्रांज़िशन जैसा ट्रांज़िशन लागू करें.
शुरुआती और आखिरी लेआउट, दोनों को एक Scene में सेव किया जाता है. हालांकि, शुरुआती सीन आम तौर पर मौजूदा लेआउट से अपने-आप तय होता है. सिस्टम को यह बताने के लिए कि आपको किस तरह का ऐनिमेशन चाहिए, आपको एक Transition बनाना होगा. इसके बाद, TransitionManager.go() को कॉल करें. इसके बाद, सिस्टम लेआउट को बदलने के लिए ऐनिमेशन चलाता है.
ज़्यादा जानकारी के लिए, ट्रांज़िशन का इस्तेमाल करके लेआउट में किए गए बदलावों को ऐनिमेट करना लेख पढ़ें. सैंपल कोड के लिए, BasicTransition देखें.
गतिविधियों के बीच ऐनिमेशन दिखाना
Android 5.0 (एपीआई लेवल 21) और इसके बाद के वर्शन पर, ऐसी ऐनिमेशन भी बनाई जा सकती हैं जो आपकी गतिविधियों के बीच ट्रांज़िशन करती हैं. यह पिछले सेक्शन में बताए गए ट्रांज़िशन फ़्रेमवर्क पर आधारित है. हालांकि, इसकी मदद से अलग-अलग गतिविधियों में लेआउट के बीच ऐनिमेशन बनाए जा सकते हैं.
आपके पास आसान ऐनिमेशन लागू करने का विकल्प होता है. जैसे, नई गतिविधि को साइड से स्लाइड करना या उसे फ़ेड इन करना. हालांकि, हर गतिविधि में शेयर किए गए व्यू के बीच ट्रांज़िशन करने वाले ऐनिमेशन भी बनाए जा सकते हैं. उदाहरण के लिए, जब उपयोगकर्ता ज़्यादा जानकारी देखने के लिए किसी आइटम पर टैप करता है, तो उसे एक ऐनिमेशन के साथ नई गतिविधि पर ले जाया जा सकता है. यह ऐनिमेशन, उस आइटम को स्क्रीन पर फ़िट करने के लिए आसानी से बड़ा कर देता है. जैसे, इमेज 5 में दिखाया गया ऐनिमेशन.
हमेशा की तरह, startActivity() को कॉल करें. हालांकि, इसे ActivityOptions.makeSceneTransitionAnimation() से मिले विकल्पों का बंडल पास करें.
विकल्पों के इस बंडल में यह शामिल हो सकता है कि गतिविधियों के बीच कौनसे व्यू शेयर किए जाएं, ताकि ऐनिमेशन के दौरान ट्रांज़िशन फ़्रेमवर्क उन्हें कनेक्ट कर सके.
ज़्यादा संसाधनों के लिए, इन्हें देखें: