بخشهای زیر نحوه ایجاد یک ویجت برنامه ساده با Glance را توضیح میدهند.
AppWidget
را در Manifest اعلام کنید
پس از تکمیل مراحل راه اندازی ، 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>
- گیرنده
AppWidget
را ازGlanceAppWidgetReceiver
گسترش دهید:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget: GlanceAppWidget = TODO("Create GlanceAppWidget") }
فراداده AppWidgetProviderInfo
را اضافه کنید
در مرحله بعد، این مرحله را دنبال کنید تا ابرداده AppWidgetProviderInfo
را اضافه کنید:
برای ایجاد و تعریف اطلاعات ویجت برنامه در فایل
@xml/my_app_widget_info
راهنمای ایجاد یک ویجت ساده را دنبال کنید.تنها تفاوت Glance این است که
initialLayout
XML وجود ندارد، اما باید یکی را تعریف کنید. می توانید از طرح بارگذاری از پیش تعریف شده ارائه شده در کتابخانه استفاده کنید:
<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") } } }
- آن را در
glanceAppWidget
درGlanceAppWidgetReceiver
خود مثال بزنید:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { // Let MyAppWidgetReceiver know which GlanceAppWidget to use override val glanceAppWidget: GlanceAppWidget = MyAppWidget() }
اکنون یک AppWidget
با استفاده از Glance پیکربندی کرده اید.
ایجاد رابط کاربری
قطعه زیر نحوه ایجاد UI را نشان می دهد:
/* 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 MyContent() } } @Composable private fun MyContent() { Column( modifier = GlanceModifier.fillMaxSize(), 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
با استفاده از لامبدا تعریف می شود. دستور مهمه
می توانید مقادیر تراز را تغییر دهید یا مقادیر اصلاح کننده مختلف (مانند padding) را برای تغییر مکان و اندازه اجزا اعمال کنید. برای فهرست کامل اجزا، پارامترها و اصلاحکنندههای موجود برای هر کلاس، به مستندات مرجع مراجعه کنید.