Aşağıdaki bölümlerde, Glance ile basit bir uygulama widget'ının nasıl oluşturulacağı açıklanmaktadır.
Manifest'te AppWidget
öğesini beyan edin
Kurulum adımlarını tamamladıktan sonra AppWidget
ve
meta verileri kullanır.
AndroidManifest.xml
dosyanıza uygulama widget'ının sağlayıcısını kaydedin ve ilişkili meta veri dosyası:
<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
alıcısınıGlanceAppWidgetReceiver
hücresinden uzatın:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget: GlanceAppWidget = TODO("Create GlanceAppWidget") }
AppWidgetProviderInfo
meta verilerini ekleyin
Ardından, AppWidgetProviderInfo
meta verilerini eklemek için şu adımı uygulayın:
Uygulamayı oluşturmak ve tanımlamak için Basit widget oluşturma rehberini takip edin widget bilgilerini
@xml/my_app_widget_info
dosyasında görebilirsiniz.Bir Bakışta için tek fark
initialLayout
XML olmamasıdır ancak tanımlamalısınız. Şurada sağlanan önceden tanımlanmış yükleme düzenini kullanabilirsiniz: kitaplık:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/glance_default_loading_layout">
</appwidget-provider>
GlanceAppWidget
kelimesinin tanımı
GlanceAppWidget
alanından başlayan veprovideGlance
yöntemi. Bu yöntem, şu tür verileri yüklemenin widget'ınızı oluşturmak için gerekenler:
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
cihazınızdakiglanceAppWidget
içinde örneklendirin:
class MyAppWidgetReceiver : GlanceAppWidgetReceiver() { // Let MyAppWidgetReceiver know which GlanceAppWidget to use override val glanceAppWidget: GlanceAppWidget = MyAppWidget() }
Glance'ı kullanarak bir AppWidget
yapılandırdınız.
Kullanıcı arayüzü oluştur
Aşağıdaki snippet'te, kullanıcı arayüzünün nasıl oluşturulacağı gösterilmektedir:
/* 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>() ) } } } }
Önceki kod örneği şunları yapar:
- Üst düzeyde
Column
öğeler her birinin arkasına dikey olarak yerleştirilir. diğer. Column
, boyutunu mevcut alana uyacak şekilde genişletir (GlanceModifier
ve içeriğini üste hizalar (verticalAlignment
) ve yatay olarak ortalar (horizontalAlignment
).Column
öğesinin içeriği lambda kullanılarak tanımlanır. Sıra önemlidir.
![hedef_widget](https://developer.android.com/static/develop/ui/compose/images/destination_widget.png?authuser=5&hl=tr)
Hizalama değerlerini değiştirebilir veya farklı değiştirici değerler uygulayabilirsiniz (ör. dolgu) kullanarak bileşenlerin yerleşimini ve boyutunu değiştirin. Daha fazla bilgi için referans belgelerine bakın. değiştiricileri bulunuyor.