ऐप्लिकेशन विजेट, ऐप्लिकेशन के छोटे व्यू होते हैं. इन्हें अन्य ऐप्लिकेशन में एम्बेड किया जा सकता है. जैसे, होम स्क्रीन. साथ ही, ये समय-समय पर अपडेट होते रहते हैं. यूज़र इंटरफ़ेस (यूआई) में, इन व्यू को विजेट कहा जाता है. इन्हें ऐप्लिकेशन विजेट प्रोवाइडर (या विजेट प्रोवाइडर) की मदद से पब्लिश किया जा सकता है. ऐप्लिकेशन का ऐसा कॉम्पोनेंट जिसमें अन्य विजेट शामिल होते हैं उसे ऐप्लिकेशन विजेट होस्ट (या विजेट होस्ट) कहा जाता है. पहली इमेज में, संगीत से जुड़ा विजेट दिखाया गया है:
इस दस्तावेज़ में, विजेट प्रोवाइडर का इस्तेमाल करके विजेट पब्लिश करने का तरीका बताया गया है. ऐप्लिकेशन विजेट को होस्ट करने के लिए, अपना AppWidgetHost बनाने के बारे में जानने के लिए, विजेट होस्ट बनाना लेख पढ़ें.
विजेट डिज़ाइन करने के बारे में जानकारी पाने के लिए, ऐप्लिकेशन विजेट की खास जानकारी देखें.
विजेट के कॉम्पोनेंट
विजेट बनाने के लिए, आपको इन बुनियादी कॉम्पोनेंट की ज़रूरत होती है:
AppWidgetProviderInfoऑब्जेक्ट- इसमें विजेट का मेटाडेटा होता है. जैसे, विजेट का लेआउट, अपडेट होने की फ़्रीक्वेंसी, और
AppWidgetProviderक्लास.AppWidgetProviderInfoको एक्सएमएल में तय किया जाता है. इसके बारे में इस दस्तावेज़ में बताया गया है. AppWidgetProviderक्लास- इसमें बुनियादी तरीके तय किए जाते हैं. इनकी मदद से, विजेट के साथ प्रोग्राम के ज़रिए इंटरैक्ट किया जा सकता है. जब विजेट अपडेट, चालू, बंद या मिटाया जाता है, तब आपको ब्रॉडकास्ट मिलते हैं. मेनिफ़ेस्ट में की जानकारी दी जाती है
AppWidgetProvider. इसके बाद, इसे लागू किया जाता है. इसके बारे में इस दस्तावेज़ में बताया गया है. - लेआउट देखें
- इसमें विजेट का शुरुआती लेआउट तय किया जाता है. लेआउट को एक्सएमएल में तय किया जाता है . इसके बारे में इस दस्तावेज़ में बताया गया है.
दूसरी इमेज में दिखाया गया है कि ये कॉम्पोनेंट, ऐप्लिकेशन विजेट की प्रोसेसिंग के पूरे फ़्लो में कैसे फ़िट होते हैं.
अगर आपके विजेट को उपयोगकर्ता के कॉन्फ़िगरेशन की ज़रूरत है, तो ऐप्लिकेशन विजेट के कॉन्फ़िगरेशन की गतिविधि लागू करें. इस गतिविधि की मदद से, उपयोगकर्ता विजेट की सेटिंग में बदलाव कर सकते हैं. जैसे, घड़ी के विजेट के लिए टाइम ज़ोन.
- Android 12 (एपीआई लेवल 31) से, डिफ़ॉल्ट कॉन्फ़िगरेशन दिया जा सकता है. साथ ही, उपयोगकर्ताओं को बाद में विजेट को फिर से कॉन्फ़िगर करने की अनुमति दी जा सकती है. ज़्यादा जानकारी के लिए, विजेट के डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करना और प्लेस किए गए विजेट को फिर से कॉन्फ़िगर करने की अनुमति देना लेख पढ़ें.
- Android 11 (एपीआई लेवल 30) या इससे पहले के वर्शन में, जब भी उपयोगकर्ता अपनी होम स्क्रीन पर विजेट जोड़ता है, तब यह गतिविधि लॉन्च होती है.
हम इन सुधारों का भी सुझाव देते हैं: विजेट के फ़्लेक्सिबल लेआउट, अन्य सुधार, बेहतर विजेट, कलेक्शन विजेट, और विजेट होस्ट बनाना.
AppWidgetProviderInfo एक्सएमएल की जानकारी देना
मेटाडेटा सेटिंग (जैसे, डिफ़ॉल्ट सेल साइज़, साइज़ बदलने की पाबंदियां, और अपडेट होने की फ़्रीक्वेंसी) को तय करने का तरीका, पारंपरिक व्यू और Glance पर आधारित विजेट, दोनों के लिए एक जैसा है.
मेटाडेटा एक्सएमएल फ़ाइल को तय और कॉन्फ़िगर करने का तरीका जानने के लिए, Glance के दस्तावेज़ में, Compose-first AppWidgetProviderInfo एक्सएमएल की जानकारी देना सेक्शन देखें.
विजेट के ब्रॉडकास्ट को मैनेज करने के लिए, AppWidgetProvider क्लास का इस्तेमाल करना
प्लैटफ़ॉर्म के ब्रॉडकास्ट रिसीवर के मेकैनिक्स, मेनिफ़ेस्ट में तय किए गए फ़िल्टर, और लाइफ़साइकल इवेंट लूप, प्लैटफ़ॉर्म के तहत एक साथ काम करते हैं. Compose-first डेवलपमेंट में, इन ब्रॉडकास्ट को GlanceAppWidgetReceiver रैपर का इस्तेमाल करके ऑर्केस्ट्रेट किया जाता है.
मेनिफ़ेस्ट में अपने रिसीवर को रजिस्टर करने और Hilt के साथ काम करने वाले लाइफ़साइकल ओवरराइड को लागू करने का तरीका जानने के लिए, Glance के दस्तावेज़ में, Compose-first ब्रॉडकास्ट को मैनेज करने के लिए, AppWidgetProvider क्लास का इस्तेमाल करना सेक्शन देखें.
विजेट का लेआउट बनाना
आपको एक्सएमएल में अपने विजेट के लिए शुरुआती लेआउट तय करना होगा. साथ ही, इसे प्रोजेक्ट की res/layout/ डायरेक्ट्री में सेव करना होगा. ज़्यादा जानकारी के लिए, डिज़ाइन से जुड़े दिशा-निर्देश देखें.
अगर आपको
लेआउट के बारे में जानकारी है, तो विजेट का लेआउट बनाना आसान है. हालांकि, ध्यान रखें कि विजेट के लेआउट, RemoteViews पर आधारित होते हैं. यह हर तरह के लेआउट या व्यू विजेट के साथ काम नहीं करता.
कस्टम व्यू या RemoteViews के साथ काम करने वाले व्यू की सबक्लास का इस्तेमाल नहीं किया जा सकता.
RemoteViews ViewStub के साथ भी काम करता है. यह एक ऐसा
View है जो दिखता नहीं है और जिसका साइज़ ज़ीरो होता है. इसका इस्तेमाल, रनटाइम पर लेआउट रिसॉर्स को लेज़ी इन्फ़्लेट करने के लिए किया जा सकता है.
स्टेटफ़ुल बिहेवियर की सुविधा
Android 12 में, मौजूदा इन कॉम्पोनेंट का इस्तेमाल करके स्टेटफ़ुल बिहेवियर की सुविधा जोड़ी गई है:
विजेट अब भी स्टेटलेस है. आपके ऐप्लिकेशन को स्टेट सेव करनी होगी और स्टेट में बदलाव करने वाले इवेंट के लिए रजिस्टर करना होगा.
यहां दिए गए कोड के उदाहरण में, इन कॉम्पोनेंट को लागू करने का तरीका बताया गया है.
Kotlin
// 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)
)
Java
// 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));
दो लेआउट उपलब्ध कराएं: पहला, Android 12 या
इसके बाद के वर्शन वाले डिवाइसों के लिए res/layout-v31 में और दूसरा, Android 11 या इससे पहले के वर्शन वाले डिवाइसों के लिए डिफ़ॉल्ट res/layout फ़ोल्डर में.
गोल कोने लागू करना
बाहरी बैकग्राउंड और अंदर के आनुपातिक रेडिआई की गणना, स्टैंडर्ड तरीके से की जाती है और इसे शेयर किया जाता है. Compose-first डेवलपमेंट में, इसे Kotlin में डाइनैमिक तौर पर सेट किया जा सकता है. इसके साथ, कस्टम थीम रिसॉर्स भी सेट किए जा सकते हैं.
कोने के रेडिआई लागू करने या Android के पुराने वर्शन वाले डिवाइसों के लिए डाइनैमिक स्टाइल सेट अप करने के लिए, Glance के दस्तावेज़ में, Compose-first गोल कोने लागू करना सेक्शन देखें.