ऐप्लिकेशन विजेट, ऐप्लिकेशन के छोटे व्यू होते हैं. इन्हें होम स्क्रीन जैसे अन्य ऐप्लिकेशन में एम्बेड किया जा सकता है. साथ ही, समय-समय पर अपडेट पाए जा सकते हैं. यूज़र इंटरफ़ेस में इन व्यू को विजेट कहा जाता है. ऐप्लिकेशन के विजेट उपलब्ध कराने वाली कंपनी (या विजेट उपलब्ध कराने वाली कंपनी) की मदद से, एक विजेट पब्लिश किया जा सकता है. ऐप्लिकेशन के जिस कॉम्पोनेंट में अन्य विजेट होते हैं उसे ऐप्लिकेशन विजेट होस्ट या विजेट होस्ट कहा जाता है. पहली इमेज में, संगीत वाले विजेट का एक उदाहरण दिखाया गया है:
इस दस्तावेज़ में, विजेट उपलब्ध कराने वाली कंपनी का इस्तेमाल करके विजेट पब्लिश करने का तरीका बताया गया है. ऐप्लिकेशन विजेट होस्ट करने के लिए, अपना AppWidgetHost बनाने के बारे में ज़्यादा जानने के लिए, विजेट होस्ट बनाना लेख पढ़ें.
विजेट डिज़ाइन करने के तरीके के बारे में जानने के लिए, ऐप्लिकेशन के विजेट की खास जानकारी देखें.
विजेट कॉम्पोनेंट
विजेट बनाने के लिए, आपको इन बुनियादी कॉम्पोनेंट की ज़रूरत होगी:
AppWidgetProviderInfoऑब्जेक्ट- यह किसी विजेट के मेटाडेटा के बारे में बताता है. जैसे, विजेट का लेआउट, अपडेट का अंतराल, और
AppWidgetProviderक्लास.AppWidgetProviderInfoको इस दस्तावेज़ में बताए गए तरीके से, XML में तय किया जाता है. AppWidgetProviderक्लास- यह बुनियादी तरीकों के बारे में बताता है. इनकी मदद से, प्रोग्राम के ज़रिए विजेट के साथ इंटरैक्ट किया जा सकता है. इसकी मदद से, विजेट के अपडेट होने, चालू होने, बंद होने या मिटने पर आपको ब्रॉडकास्ट मिलते हैं. आपको मेनिफ़ेस्ट फ़ाइल में
AppWidgetProviderका एलान करना होगा. इसके बाद, इस दस्तावेज़ में बताए गए तरीके से, इसे लागू करना होगा. - लेआउट देखें
- इससे विजेट के शुरुआती लेआउट के बारे में पता चलता है. लेआउट को एक्सएमएल में तय किया गया है. इसके बारे में इस दस्तावेज़ में बताया गया है.
दूसरी इमेज में दिखाया गया है कि ये कॉम्पोनेंट, ऐप्लिकेशन विजेट की प्रोसेसिंग के पूरे फ़्लो में कैसे काम करते हैं.
अगर आपके विजेट के लिए उपयोगकर्ता के कॉन्फ़िगरेशन की ज़रूरत है, तो ऐप्लिकेशन विजेट कॉन्फ़िगरेशन गतिविधि लागू करें. इस गतिविधि की मदद से, उपयोगकर्ता विजेट की सेटिंग में बदलाव कर सकते हैं. उदाहरण के लिए, घड़ी वाले विजेट के लिए टाइम ज़ोन.
- Android 12 (एपीआई लेवल 31) से, डिफ़ॉल्ट कॉन्फ़िगरेशन दिया जा सकता है. साथ ही, उपयोगकर्ताओं को बाद में विजेट को फिर से कॉन्फ़िगर करने की अनुमति दी जा सकती है. ज़्यादा जानकारी के लिए, विजेट के डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करना और उपयोगकर्ताओं को रखे गए विजेट को फिर से कॉन्फ़िगर करने की अनुमति देना लेख पढ़ें.
- Android 11 (एपीआई लेवल 30) या इससे पहले के वर्शन में, जब भी उपयोगकर्ता अपनी होम स्क्रीन पर विजेट जोड़ता है, तब यह गतिविधि लॉन्च होती है.
हम यहां दिए गए सुधारों को भी लागू करने का सुझाव देते हैं: विजेट के लेआउट में बदलाव करने की सुविधा, अन्य सुधार, ऐडवांस विजेट, कलेक्शन विजेट, और विजेट होस्ट बनाना.
AppWidgetProviderInfo एक्सएमएल का एलान करना
मेटाडेटा सेटिंग (जैसे, सेल के डिफ़ॉल्ट साइज़, साइज़ बदलने की सीमाएं, और अपडेट होने की फ़्रीक्वेंसी) को तय करने का तरीका, पारंपरिक व्यू और Glance पर आधारित विजेट, दोनों के लिए एक जैसा होता है.
मेटाडेटा की एक्सएमएल फ़ाइल को तय करने और कॉन्फ़िगर करने का तरीका जानने के लिए, Glance के दस्तावेज़ में Compose-first AppWidgetProviderInfo XML सेक्शन के बारे में जानकारी देखें.
विजेट ब्रॉडकास्ट मैनेज करने के लिए, AppWidgetProvider क्लास का इस्तेमाल करना
प्लैटफ़ॉर्म के ब्रॉडकास्ट रिसीवर मेकेनिज़्म, मेनिफ़ेस्ट डिक्लेरेशन फ़िल्टर, और लाइफ़साइकल इवेंट लूप को प्लैटफ़ॉर्म के तहत एक साथ रखा जाता है. Compose-first डेवलपमेंट में, इन ब्रॉडकास्ट को GlanceAppWidgetReceiver रैपर का इस्तेमाल करके व्यवस्थित किया जाता है.
मैनिफ़ेस्ट में रिसीवर को रजिस्टर करने और Hilt के साथ काम करने वाले लाइफ़साइकल ओवरराइड लागू करने का तरीका जानने के लिए, Glance के दस्तावेज़ में Compose-first ब्रॉडकास्ट मैनेज करने के लिए AppWidgetProvider क्लास का इस्तेमाल करें सेक्शन देखें.
विजेट का लेआउट बनाना
आपको एक्सएमएल में अपने विजेट के लिए शुरुआती लेआउट तय करना होगा. साथ ही, इसे प्रोजेक्ट की res/layout/ डायरेक्ट्री में सेव करना होगा. ज़्यादा जानकारी के लिए, डिज़ाइन से जुड़े दिशा-निर्देश देखें.
अगर आपको लेआउट के बारे में जानकारी है, तो विजेट का लेआउट बनाना आसान है. हालांकि, ध्यान रखें कि विजेट लेआउट, RemoteViews पर आधारित होते हैं. इसलिए, यह हर तरह के लेआउट या व्यू विजेट के साथ काम नहीं करता.
RemoteViews के साथ काम करने वाले व्यू के कस्टम व्यू या सबक्लास का इस्तेमाल नहीं किया जा सकता.
RemoteViews, ViewStub को भी सपोर्ट करता है. यह एक अदृश्य, ज़ीरो साइज़ का View होता है. इसका इस्तेमाल, लेआउट रिसॉर्स को रनटाइम पर धीरे-धीरे बढ़ाने के लिए किया जा सकता है.
स्टेटफ़ुल व्यवहार के लिए सहायता
Android 12 में, इन मौजूदा कॉम्पोनेंट का इस्तेमाल करके स्टेटफ़ुल व्यवहार के लिए सहायता जोड़ी गई है:
विजेट अब भी स्टेटलेस है. आपके ऐप्लिकेशन को स्थिति सेव करनी चाहिए और स्थिति में बदलाव होने पर सूचना पाने के लिए रजिस्टर करना चाहिए.
यहां दिए गए कोड के उदाहरण में, इन कॉम्पोनेंट को लागू करने का तरीका बताया गया है.
// Check the view. remoteView.setCompoundButtonChecked(R.id.my_checkbox, true) // Check a radio group. remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2) // Listen for check changes. The intent has an extra with the key // EXTRA_CHECKED that specifies the current checked state of the view. remoteView.setOnCheckedChangeResponse( R.id.my_checkbox, RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent) )
दो लेआउट उपलब्ध कराएं: एक लेआउट, res/layout-v31 फ़ोल्डर में Android 12 या इसके बाद के वर्शन वाले डिवाइसों को टारगेट करता है. वहीं, दूसरा लेआउट डिफ़ॉल्ट res/layout फ़ोल्डर में Android 11 या इससे पहले के वर्शन वाले डिवाइसों को टारगेट करता है.
गोल कोने लागू करना
आउटर बैकग्राउंड और इनर प्रोपोर्शनल रेडियस का हिसाब लगाने का तरीका स्टैंडर्ड है और इसे शेयर किया जाता है. Compose-first डेवलपमेंट में, इसे Kotlin में डाइनैमिक तौर पर सेट किया जा सकता है. साथ ही, कस्टम थीम के संसाधनों को भी सेट किया जा सकता है.
Android के पुराने डिवाइसों के लिए, कॉर्नर रेडियस लागू करने या डाइनैमिक स्टाइल सेट अप करने के लिए, Glance के दस्तावेज़ में Compose-first गोल कोनों को लागू करना सेक्शन देखें.