अपने विजेट को बेहतर बनाएं

इस पेज पर, विजेट को बेहतर बनाने के विकल्पों के बारे में जानकारी दी गई है. ये विकल्प, Android 12 (एपीआई लेवल 31) से उपलब्ध हैं. ये सुविधाएं ज़रूरी नहीं हैं. हालांकि, इन्हें लागू करना और उपयोगकर्ताओं को विजेट का बेहतर अनुभव देना आसान है.

डाइनैमिक कलर का इस्तेमाल करना

Android 12 और उसके बाद के वर्शन में, विजेट में बटन, बैकग्राउंड, और अन्य कॉम्पोनेंट के लिए, डिवाइस की थीम के रंगों का इस्तेमाल किया जा सकता है. यह बेहतर तरीके से काम करता है ट्रांज़िशन और एक जैसा अनुभव पाएं.

डाइनैमिक रंगों को दो तरीकों से इस्तेमाल किया जा सकता है:

रूट लेआउट में थीम सेट होने के बाद, डाइनैमिक कलर चुनने के लिए, रूट या उसके किसी भी चाइल्ड में सामान्य कलर एट्रिब्यूट का इस्तेमाल किया जा सकता है.

नीचे रंग एट्रिब्यूट के कुछ उदाहरण दिए गए हैं, जिनका इस्तेमाल किया जा सकता है:

  • ?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
    ...
    app:tint="?attr/colorPrimaryContainer"
    android:src="@drawable/ic_partly_cloudy" />

    <!-- Other widget content. -->

</LinearLayout>
हल्के रंग वाले मोड की थीम में विजेट
पहली इमेज. हल्के रंग वाली थीम में विजेट.
गहरे रंग वाले मोड की थीम में विजेट
दूसरी इमेज. गहरे रंग वाली थीम में विजेट.

डाइनैमिक कलर के लिए पुराने सिस्टम के साथ काम करने की सुविधा

डाइनैमिक कलर की सुविधा, सिर्फ़ Android 12 या इसके बाद के वर्शन वाले डिवाइसों पर उपलब्ध है. अगर पुराने वर्शन में पसंद के मुताबिक थीम बनानी है, तो डिफ़ॉल्ट थीम बनाएं इसमें आपकी पसंद के हिसाब से चुने गए रंगों और डिफ़ॉल्ट क्वालीफ़ायर (values-v31) का इस्तेमाल किया गया है थीम एट्रिब्यूट.

यहां मटीरियल 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

<resources>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:background="?android:attr/colorBackground"
    android:theme="@style/MyWidgetTheme" />
</resources>

बोलकर निर्देश देने की सुविधा चालू करना

ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयां, Google Assistant की सुविधा देती हैं उपयोगकर्ता के प्रासंगिक बोले गए निर्देशों के जवाब में विजेट दिखाने होंगे. पहले से मौजूद इंटेंट (बीआईआई) का जवाब देने के लिए, अपने विजेट को कॉन्फ़िगर करें. इससे आपका ऐप्लिकेशन, Android और Android Auto जैसे Assistant प्लैटफ़ॉर्म पर विजेट दिखा सकता है. उपयोगकर्ताओं के पास पिन करने विजेट को Assistant की मदद से लॉन्चर के साथ उपलब्ध है. इससे, आने वाले समय में लोगों के जुड़ाव को बढ़ावा मिलेगा.

उदाहरण के लिए, कसरत करने वाले ऐप्लिकेशन के लिए, वर्कआउट की खास जानकारी वाला विजेट कॉन्फ़िगर किया जा सकता है. इससे, उपयोगकर्ता के उन वॉइस कमांड को पूरा किया जा सकता है जो GET_EXERCISE_OBSERVATION बीआईआई को ट्रिगर करते हैं. जब उपयोगकर्ता इस बीआईआई को ट्रिगर करते हैं, तब Assistant आपका विजेट अपने-आप दिखाती है मैं ऐसा अनुरोध कर रही हूँ, "Ok Google, मैंने इस हफ़्ते कितने मील दौड़े ExampleApp?"

उपयोगकर्ता इंटरैक्शन की कई कैटगरी को कवर करने वाले दर्जनों बीआईआई हैं. इनकी मदद से, ज़्यादातर Android ऐप्लिकेशन अपने विजेट को वॉइस के लिए बेहतर बना सकते हैं. शुरू करने के लिए, Android विजेट के साथ ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों को इंटिग्रेट करना देखें.

अपने ऐप्लिकेशन के विजेट पिकर का अनुभव बेहतर बनाना

Android 12 की मदद से, विजेट पिकर के अनुभव को बेहतर बनाया जा सकता है. इसके लिए, विजेट की डाइनैमिक झलक और विजेट की जानकारी जोड़ें.

विजेट पिकर में, स्केल किए जा सकने वाले विजेट की झलक जोड़ना

Android 12 की शुरुआत में, बैज की झलक विजेट पिकर को स्केल किया जा सकता है. आप इसे विजेट के लिए सेट किए गए XML लेआउट के रूप में प्रदान करते हैं डिफ़ॉल्ट साइज़. पहले, विजेट की झलक एक स्टैटिक ड्रॉ करने लायक संसाधन था, जिसमें कुछ मामलों में, झलक के तौर पर दिखने वाली सेटिंग में, विजेट के दिखने के तरीके को गलत तरीके से दिखाया जाता है. तो उन्हें होम स्क्रीन पर जोड़ दिया जाता है.

बढ़ाने लायक विजेट की झलक लागू करने के लिए, previewLayout इसके बजाय, एक्सएमएल लेआउट देने के लिए appwidget-provider एलिमेंट का एट्रिब्यूट इस्तेमाल करें:

<appwidget-provider
    android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>

हमारा सुझाव है कि आप असल विजेट के जैसे ही लेआउट का इस्तेमाल करें. साथ ही, इसमें सही डिफ़ॉल्ट या जांच के लिए वैल्यू डालें. ज़्यादातर ऐप्लिकेशन, एक ही previewLayout और initialLayout का इस्तेमाल करते हैं. झलक के सटीक लेआउट बनाने के बारे में दिशा-निर्देश पाने के लिए, इस पेज पर दिया गया सेक्शन देखें.

हमारा सुझाव है कि आप previewLayout और previewImage, दोनों एट्रिब्यूट की जानकारी दें. ऐसा इसलिए, ताकि अगर उपयोगकर्ता के डिवाइस पर previewLayout काम न करे, तो आपका ऐप्लिकेशन previewImage का इस्तेमाल कर सके. previewLayout एट्रिब्यूट को previewImage एट्रिब्यूट पर प्राथमिकता दी जाती है.

सटीक झलक बनाने के लिए सुझाए गए तरीके

स्केलेबल विजेट की झलक दिखाने के लिए, एक्सएमएल लेआउट देने के लिए appwidget-provider एलिमेंट के previewLayout एट्रिब्यूट का इस्तेमाल करें:

<appwidget-provider
    ...
    android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
विजेट की झलक दिखाने वाली इमेज
तीसरा डायग्राम. विजेट की झलक, जो डिफ़ॉल्ट रूप से मौजूद होती है 3x3 एरिया में दिखता है, लेकिन अपने एक्सएमएल लेआउट की वजह से, यह 3x1 एरिया में फ़िट हो सकता है.

सटीक झलक देखने के लिए, सीधे तौर पर असल विजेट दिया जा सकता है डिफ़ॉल्ट वैल्यू वाला लेआउट चुनें. इसके लिए, नीचे दिए गए चरणों को पूरा करें:

  • TextView एलिमेंट के लिए android:text="@string/my_widget_item_fake_1" सेट करना.

  • ImageView कॉम्पोनेंट के लिए, डिफ़ॉल्ट या प्लेसहोल्डर इमेज या आइकॉन सेट करना, जैसे कि android:src="@drawable/my_widget_icon".

डिफ़ॉल्ट वैल्यू के बिना, हो सकता है कि झलक में गलत या खाली वैल्यू दिखें. अगर आप इस तरीके का एक अहम फ़ायदा यह है कि स्थानीय भाषा में झलक उपलब्ध कराई जा सकती है. कॉन्टेंट.

ज़्यादा कॉम्प्लेक्स झलक के लिए सुझाए गए तरीके, जिनमें ListView शामिल हो, GridView या StackView, ऐसे सटीक झलक बनाएं जिनमें डाइनैमिक शामिल हो आइटम देखें.

स्केल किए जा सकने वाले विजेट की झलक दिखाने की सुविधा, पुराने वर्शन के साथ काम करती है

Android 11 (एपीआई लेवल 30) या इससे पहले के वर्शन वाले विजेट पर, विजेट पिकर को विजेट पर, previewImage बताएं एट्रिब्यूट की वैल्यू सबमिट करें.

विजेट का रंग-रूप बदलने के बाद, उसकी झलक दिखाने वाली इमेज को अपडेट करें.

अपने विजेट के लिए जानकारी जोड़ें

Android 12 में, विजेट के लिए विजेट चुनने वाले टूल में दिखने वाला ब्यौरा दें.

विजेट पिकर की इमेज, जिसमें विजेट और उसका ब्यौरा दिखाया गया है
चौथी इमेज. विजेट दिखाने वाला सैंपल विजेट पिकर और उसके बारे में जानकारी शामिल होती है.

&lt;appwidget-provider&gt; एलिमेंट के description एट्रिब्यूट का इस्तेमाल करके, अपने विजेट के बारे में जानकारी दें:

<appwidget-provider
    android:description="@string/my_widget_description">
</appwidget-provider>

Android के पिछले वर्शन पर, descriptionRes एट्रिब्यूट का इस्तेमाल किया जा सकता है. हालांकि, विजेट पिकर इस एट्रिब्यूट को अनदेखा कर देता है.

आसान ट्रांज़िशन की सुविधा चालू करें

Android 12 की शुरुआत से, लॉन्चर की मदद से ट्रांज़िशन करना आसान हो जाता है जब कोई उपयोगकर्ता किसी विजेट से आपका ऐप्लिकेशन लॉन्च करता है.

बेहतर ट्रांज़िशन की सुविधा चालू करने के लिए, अपने बैकग्राउंड एलिमेंट की पहचान करने के लिए @android:id/background या android.R.id.background का इस्तेमाल करें:

// Top-level layout of the widget.
<LinearLayout
    android:id="@android:id/background">
</LinearLayout>

आपका ऐप्लिकेशन, Android के पुराने वर्शन पर @android:id/background का इस्तेमाल कर सकता है. हालांकि, इसकी अनदेखी की जाती है.

RemoteViews के रनटाइम में बदलाव करने की सुविधा का इस्तेमाल करना

Android 12 से, Android 12.05 वर्शन की मदद से RemoteViews के ऐसे तरीके जो RemoteViews के रनटाइम में बदलाव करने की सुविधा देते हैं एट्रिब्यूट की वैल्यू सबमिट करें. जोड़े गए तरीकों की पूरी सूची के लिए, RemoteViews एपीआई का रेफ़रंस देखें.

नीचे दिए गए कोड के उदाहरण में, इनमें से कुछ तरीकों का इस्तेमाल करने का तरीका बताया गया है.

Kotlin

// 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_DP)

Java

// 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_DP);