इन सेक्शन में, एक नज़र में जानकारी देखने की सुविधा की मदद से ऐप्लिकेशन का विजेट बनाने का तरीका बताया गया है.
मेनिफ़ेस्ट में AppWidget
का एलान करें
सेटअप के चरण पूरे करने के बाद, AppWidget
और
मेटाडेटा भी शामिल है.
- ऐप्लिकेशन विजेट की सेवा देने वाले को अपनी
AndroidManifest.xml
फ़ाइल में रजिस्टर करें और संबंधित मेटाडेटा फ़ाइल:
<receiver android:name=".glance.MyReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/my_app_widget_info" />
</receiver>
GlanceAppWidgetReceiver
सेAppWidget
पाने वाले डिवाइस का समय बढ़ाएं:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget: GlanceAppWidget = TODO("Create GlanceAppWidget") }
AppWidgetProviderInfo
मेटाडेटा जोड़ें
इसके बाद, AppWidgetProviderInfo
मेटाडेटा जोड़ने के लिए यह तरीका अपनाएं:
ऐप्लिकेशन बनाने और तय करने के लिए, आसान विजेट बनाएं गाइड का पालन करें
@xml/my_app_widget_info
फ़ाइल में विजेट की जानकारी.एक नज़र में जानकारी देखने में सिर्फ़ यह अंतर है कि इसमें कोई
initialLayout
एक्सएमएल नहीं है, लेकिन आपको एक की परिभाषा तय करनी होगी. आपके पास, लोड होने के लिए पहले से तय किए गए लेआउट का इस्तेमाल करने का विकल्प होता है. लाइब्रेरी:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout">
</appwidget-provider>
GlanceAppWidget
तय करें
एक ऐसी नई क्लास बनाएं जो
GlanceAppWidget
से जुड़ी हो औरprovideGlance
तरीका. आप इस तरीके से वह डेटा लोड कर सकते हैं आपके विजेट को रेंडर करने के लिए ज़रूरी है:
class MyAppWidget : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) { // In this method, load data needed to render the AppWidget. // Use `withContext` to switch to another thread for long running // operations. provideContent { // create your AppWidget here Text("Hello World") } } }
- इसे अपने
GlanceAppWidgetReceiver
परglanceAppWidget
में इंस्टैंशिएट करें:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { // Let MyAppWidgetReceiver know which GlanceAppWidget to use override val glanceAppWidget: GlanceAppWidget = MyAppWidget() }
अब आपने एक नज़र में जानकारी का इस्तेमाल करके AppWidget
को कॉन्फ़िगर कर लिया है.
यूज़र इंटरफ़ेस (यूआई) बनाएं
नीचे दिया गया स्निपेट यूज़र इंटरफ़ेस (यूआई) बनाने का तरीका बताता है:
/* Import Glance Composables In the event there is a name clash with the Compose classes of the same name, you may rename the imports per https://kotlinlang.org/docs/packages.html#imports using the `as` keyword. import androidx.glance.Button import androidx.glance.layout.Column import androidx.glance.layout.Row import androidx.glance.text.Text */ class MyAppWidget : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) { // Load data needed to render the AppWidget. // Use `withContext` to switch to another thread for long running // operations. provideContent { // create your AppWidget here GlanceTheme { MyContent() } } } @Composable private fun MyContent() { Column( modifier = GlanceModifier.fillMaxSize() .background(GlanceTheme.colors.background), verticalAlignment = Alignment.Top, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Where to?", modifier = GlanceModifier.padding(12.dp)) Row(horizontalAlignment = Alignment.CenterHorizontally) { Button( text = "Home", onClick = actionStartActivity<MyActivity>() ) Button( text = "Work", onClick = actionStartActivity<MyActivity>() ) } } } }
ऊपर दिया गया कोड सैंपल ये काम करता है:
- टॉप लेवल
Column
में, आइटम को हर एक के बाद वर्टिकल तौर पर रखा जाता है अन्य. Column
, उपलब्ध जगह के हिसाब से अपना साइज़ बड़ा कर लेता है. इसके लिए,GlanceModifier
और इसके कॉन्टेंट को सबसे ऊपर अलाइन करता है (verticalAlignment
) और इसे हॉरिज़ॉन्टल तौर पर सेंटर में लाता है (horizontalAlignment
).Column
का कॉन्टेंट, Lambda फ़ंक्शन का इस्तेमाल करके तय किया जाता है. क्रम महत्वपूर्ण होता है.Column
में पहला आइटम एकText
कॉम्पोनेंट है, जिसमें12.dp
हैं पैडिंग.- दूसरा आइटम
Row
है, जिसमें आइटम को हॉरिज़ॉन्टल तौर पर रखा जाता है एक-दूसरे के बाद, दोButtons
हॉरिज़ॉन्टल तौर पर बीच में (horizontalAlignment
). फ़ाइनल डिसप्ले, खाली जगह के हिसाब से दिखता है. नीचे दी गई इमेज में बताया गया है कि यह कैसी दिख सकती है:
आप अलाइनमेंट वैल्यू को बदल सकते हैं या कार्रवाई बदलने वाली अलग-अलग वैल्यू लागू कर सकते हैं (जैसे पैडिंग (जगह). इससे कॉम्पोनेंट के प्लेसमेंट और साइज़ में बदलाव किया जा सकता है. संदर्भ देखें दस्तावेज़ में कॉम्पोनेंट, पैरामीटर, और उपलब्ध हर क्लास के लिए, कार्रवाई बदलने वाली कुंजी.