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

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

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

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

डाइनैमिक कलर पाने के दो तरीके हैं:

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

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

  • ?attr/primary
  • ?attr/primaryContainer
  • ?attr/onPrimary
  • ?attr/onPrimaryContainer

मटीरियल 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 की सुविधा देती हैं उपयोगकर्ता के काम के वॉइस कमांड के जवाब में विजेट दिखाती है. अपने बिल्ट-इन इंटेंट (बीआईआई) का जवाब देने के लिए विजेट ऐप, Assistant के प्लैटफ़ॉर्म पर अपने-आप विजेट दिखा सकता है. जैसे, Android और Android Auto. उपयोगकर्ताओं के पास पिन करने विजेट को 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, दोनों एट्रिब्यूट की जानकारी देने का सुझाव देते हैं, ताकि उपयोगकर्ता के डिवाइस पर आपका ऐप्लिकेशन previewImage का फिर से इस्तेमाल कर सके previewLayout का इस्तेमाल नहीं किया जा सकता. previewLayout एट्रिब्यूट को प्राथमिकता दी जाती है previewImage एट्रिब्यूट पर क्लिक करें.

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

विजेट की झलक को बड़े पैमाने पर लागू करने के लिए, previewLayout एक्सएमएल लेआउट देने के लिए appwidget-provider एलिमेंट:

<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 और इसके बाद के वर्शन में, विजेट के लिए जानकारी उपलब्ध कराएं आपके विजेट को दिखाने के लिए पिकर.

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

अपने विजेट के लिए description विशेषता का उपयोग करके &lt;appwidget-provider&gt; एलिमेंट:

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

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

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

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