इस पेज पर, Android 12 (एपीआई लेवल 31) और इसके बाद के वर्शन में उपलब्ध, विजेट को बेहतर बनाने के लिए उपलब्ध वैकल्पिक सुविधाओं के बारे में जानकारी दी गई है. ये सुविधाएं ज़रूरी नहीं हैं, लेकिन इन्हें लागू करना आसान है. साथ ही, इनसे उपयोगकर्ताओं को विजेट का बेहतर अनुभव मिलता है.
विजेट को बेहतर बनाने के अन्य तरीके जानने के लिए, Compose की गाइड विजेट को बेहतर बनाएं देखें.
डाइनैमिक कलर इस्तेमाल करना
Android 12 से, विजेट में बटन, बैकग्राउंड, और अन्य कॉम्पोनेंट के लिए, डिवाइस की थीम के रंगों का इस्तेमाल किया जा सकता है. इससे अलग-अलग विजेट के बीच आसानी से ट्रांज़िशन किया जा सकता है और एक जैसा अनुभव मिलता है.
डाइनैमिक कलर इस्तेमाल करने के दो तरीके हैं:
रूट लेआउट में, सिस्टम की डिफ़ॉल्ट थीम (
@android:style/Theme.DeviceDefault.DayNight) का इस्तेमाल करें.Material Components for Android लाइब्रेरी से Material 3 थीम (
Theme.Material3.DynamicColors.DayNight) का इस्तेमाल करें. यह Material Components for Android v1.6.0 से उपलब्ध है.
रूट लेआउट में थीम सेट करने के बाद, रूट या उसके किसी भी चाइल्ड लेआउट में सामान्य कलर एट्रिब्यूट का इस्तेमाल करके, डाइनैमिक कलर चुने जा सकते हैं.
रंग एट्रिब्यूट के कुछ उदाहरण यहां दिए गए हैं:
?attr/primary?attr/primaryContainer?attr/onPrimary?attr/onPrimaryContainer
Material 3 थीम का इस्तेमाल करने वाले इस उदाहरण में, डिवाइस की थीम का रंग "बैंगनी" है. ऐक्सेंट कलर और विजेट का बैकग्राउंड, हल्के और गहरे रंग वाले मोड के हिसाब से सेट हो जाता है. जैसा कि पहली और दूसरी इमेज में दिखाया गया है.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/colorPrimaryContainer" android:theme="@style/Theme.Material3.DynamicColors.DayNight"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:tint="?attr/colorPrimaryContainer" android:src="@drawable/ic_cloud" /> <!-- Other widget content. --> </LinearLayout>
डाइनैमिक कलर के लिए, पुराने सिस्टम के साथ काम करने की सुविधा
डाइनैमिक कलर की सुविधा, सिर्फ़ Android 12 या इसके बाद के वर्शन वाले डिवाइसों पर उपलब्ध है. पुराने वर्शन के लिए कस्टम थीम उपलब्ध कराने के लिए, डिफ़ॉल्ट थीम एट्रिब्यूट का इस्तेमाल करके, अपनी पसंद के हिसाब से रंगों और नए क्वालीफ़ायर (values-v31) के साथ डिफ़ॉल्ट थीम बनाएं.
यहां Material 3 थीम का इस्तेमाल करने का एक उदाहरण दिया गया है:
/values/styles.xml
<resources> <style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight"> <!-- Override default colorBackground attribute with custom color. --> <item name="android:colorBackground">@color/my_background_color</item> <!-- Add other colors/attributes. --> </style> </resources>
/values-v31/styles.xml
<resources> <!-- Do not override any color attribute. --> <style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight" /> </resources>
/layout/my_widget_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="?android:attr/colorBackground" android:theme="@style/MyWidgetTheme" />
बोलकर इस्तेमाल करने की सुविधा चालू करना
ऐप्लिकेशन ऐक्शन की मदद से, Google Assistant उपयोगकर्ता के काम के वॉइस कमांड के जवाब में विजेट दिखा सकती है. बिल्ट-इन इंटेंट (बीआईआई) का जवाब देने के लिए, विजेट को कॉन्फ़िगर करके, आपका ऐप्लिकेशन Android और Android Auto जैसी Assistant की जगहों पर विजेट दिखा सकता है. उपयोगकर्ता, Assistant की ओर से दिखाए गए विजेट को पिन कर सकते हैं. इससे, आने वाले समय में ऐप्लिकेशन के साथ उनकी दिलचस्पी बढ़ती है.
उदाहरण के लिए, कसरत से जुड़े ऐप्लिकेशन के लिए, कसरत की खास जानकारी वाले विजेट को कॉन्फ़िगर किया जा सकता है. इससे उपयोगकर्ता के बोले गए उन निर्देशों को पूरा किया जा सकता है जो GET_EXERCISE_OBSERVATION बीआईआई को ट्रिगर करते हैं. जब उपयोगकर्ता इस बीआईआई को ट्रिगर करते हैं, तो Assistant आपका विजेट दिखाती है. इसके लिए, उपयोगकर्ता इस तरह के अनुरोध करते हैं, "Ok Google, मैंने इस हफ़्ते ExampleApp पर कितने मील की दौड़ लगाई?"
उपयोगकर्ता के इंटरैक्शन की कई कैटगरी को कवर करने वाले दर्जनों बीआईआई मौजूद हैं. इनकी मदद से, Android के किसी भी ऐप्लिकेशन के विजेट को आवाज़ के लिए बेहतर बनाया जा सकता है. शुरू करने के लिए, ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों को Android विजेट के साथ इंटिग्रेट करना लेख पढ़ें.
बेहतर ट्रांज़िशन की सुविधा चालू करना
Android 12 से, लॉन्चर की मदद से उपयोगकर्ता को आपके ऐप्लिकेशन को विजेट से लॉन्च करने पर, बेहतर ट्रांज़िशन मिलता है.
इस बेहतर ट्रांज़िशन को चालू करने के लिए, @android:id/background या android.R.id.background का इस्तेमाल करके, अपने बैकग्राउंड एलिमेंट की पहचान करें:
<!-- Top-level layout of the widget. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/background" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout>
आपका ऐप्लिकेशन, Android के पुराने वर्शन पर @android:id/background का इस्तेमाल कर सकता है. इससे ऐप्लिकेशन के काम करने के तरीके पर कोई असर नहीं पड़ता. हालांकि, इसे अनदेखा कर दिया जाता है.
RemoteViews में रनटाइम के दौरान बदलाव करने की सुविधा का इस्तेमाल करना
Android 12 से, RemoteViews के कई तरीकों का फ़ायदा लिया जा सकता है. इनकी मदद से, रनटाइम के दौरान RemoteViews एट्रिब्यूट में बदलाव किया जा सकता है. जोड़े गए तरीकों की पूरी सूची देखने के लिए, RemoteViews एपीआई का रेफ़रंस देखें.
यहां दिए गए कोड के उदाहरण में, इनमें से कुछ तरीकों को इस्तेमाल करने का तरीका बताया गया है.
// Set the colors of a progress bar at runtime. remoteView.setColorStateList( R.id.progress, "setProgressTintList", createProgressColorStateList() ) // Specify exact sizes for margins. remoteView.setViewLayoutMargin( R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DIP )