Temel widget oluşturma

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose tarzı API'leri kullanarak widget oluşturmayı öğrenin.

Uygulama widget'ları, ana ekran gibi diğer uygulamalara yerleştirebileceğiniz ve düzenli güncellemeler alabileceğiniz minyatür uygulama görünümleridir. Bu görünümler, kullanıcı arayüzünde widget olarak adlandırılır ve bir uygulama widget sağlayıcısı (veya widget sağlayıcı) ile bir widget yayınlayabilirsiniz. Diğer widget'ları barındıran uygulama bileşenine uygulama widget'ı barındırıcısı (veya widget barındırıcısı) denir. Şekil 1'de örnek bir müzik widget'ı gösterilmektedir:

Müzik widget'ı örneği
Şekil 1. Müzik widget'ı örneği.

Bu belgede, widget sağlayıcı kullanarak widget yayınlama işlemi açıklanmaktadır. Uygulama widget'larını barındırmak için kendi AppWidgetHost öğenizi oluşturma hakkında ayrıntılı bilgi edinmek istiyorsanız Widget ana makinesi oluşturma başlıklı makaleyi inceleyin.

Widget'ınızı nasıl tasarlayacağınız hakkında bilgi edinmek için Uygulama widget'larına genel bakış başlıklı makaleyi inceleyin.

Widget bileşenleri

Widget oluşturmak için aşağıdaki temel bileşenlere ihtiyacınız vardır:

AppWidgetProviderInfo nesnesi
Widget'ın düzeni, güncelleme sıklığı ve AppWidgetProvider sınıfı gibi meta verilerini açıklar. AppWidgetProviderInfo, bu dokümanda açıklandığı gibi XML'de tanımlanır.
AppWidgetProvider sınıfı
Widget ile programatik olarak arayüz oluşturmanıza olanak tanıyan temel yöntemleri tanımlar. Bu sayede, widget güncellendiğinde, etkinleştirildiğinde, devre dışı bırakıldığında veya silindiğinde yayın alırsınız. AppWidgetProvider öğesini manifest dosyasında beyan eder ve ardından bu belgede açıklandığı şekilde uygularsınız.
Düzeni göster
Widget'ın ilk düzenini tanımlar. Düzen, bu dokümanda açıklandığı gibi XML'de tanımlanır.

Şekil 2'de, bu bileşenlerin genel uygulama widget'ı işleme akışına nasıl uyduğu gösterilmektedir.

Uygulama widget'ı işleme akışı
Şekil 2. Uygulama widget'ı işleme akışı.

Widget'ınız için kullanıcı yapılandırması gerekiyorsa uygulama widget'ı yapılandırma etkinliğini uygulayın. Bu etkinlik, kullanıcıların widget ayarlarını (ör. saat widget'ının saat dilimi) değiştirmesine olanak tanır.

Ayrıca şu iyileştirmeleri de öneririz: esnek widget düzenleri, çeşitli geliştirmeler, gelişmiş widget'lar, koleksiyon widget'ları ve widget ana sistemi oluşturma.

AppWidgetProviderInfo XML'ini bildirme

Meta veri ayarlarını (ör. varsayılan hücre boyutları, yeniden boyutlandırma kısıtlamaları ve güncelleme sıklıkları) tanımlama işlemi, hem geleneksel görünümlerde hem de Glance tabanlı widget'larda tamamen aynıdır.

Meta veri XML dosyanızı nasıl tanımlayacağınızı ve yapılandıracağınızı öğrenmek için Glance belgelerindeki öncelikli olarak oluşturma AppWidgetProviderInfo XML bölümünü bildirme konusuna bakın.

Widget yayınlarını işlemek için AppWidgetProvider sınıfını kullanma

Platformun yayın alıcı mekanizmaları, manifest beyan filtreleri ve yaşam döngüsü etkinlik döngüleri platform altında birleştirilmiştir. Önce Compose yaklaşımını benimseyen geliştirmelerde bu yayınlar, GlanceAppWidgetReceiver sarmalayıcısı kullanılarak yönetilir.

Alıcınızı manifest dosyasında nasıl kaydedeceğinizi ve Hilt ile uyumlu yaşam döngüsü geçersiz kılma işlemlerini nasıl uygulayacağınızı öğrenmek için Glance belgelerindeki Compose öncelikli Yayınları işlemek için AppWidgetProvider sınıfını kullanma bölümüne bakın.

Widget düzenini oluşturma

Widget'ınız için XML'de bir başlangıç düzeni tanımlamanız ve bunu projenin res/layout/ dizinine kaydetmeniz gerekir. Ayrıntılar için Tasarım yönergeleri'ne bakın.

Düzenler hakkında bilgi sahibiyseniz widget düzenini oluşturmak kolaydır. Ancak widget düzenlerinin RemoteViews'e dayalı olduğunu ve her tür düzen veya görünüm widget'ını desteklemediğini unutmayın. RemoteViews tarafından desteklenen görünümlerin özel görünümlerini veya alt sınıflarını kullanamazsınız.

RemoteViews, çalışma zamanında düzen kaynaklarını geç yüklemek için kullanabileceğiniz görünmez, sıfır boyutlu bir View olan ViewStub öğesini de destekler.

Durum bilgisi olan davranış desteği

Android 12, aşağıdaki mevcut bileşenleri kullanarak durum bilgisi olan davranış için destek ekler:

Widget hâlâ durum bilgisizdir. Uygulamanız durumu depolamalı ve durum değişikliği etkinliklerine kaydolmalıdır.

Durum bilgisi içeren davranış gösteren alışveriş listesi widget'ı örneği
Şekil 3. Durum bilgisi olan davranış örneği.

Aşağıdaki kod örneğinde bu bileşenlerin nasıl uygulanacağı gösterilmektedir.

// Check the view.
remoteView.setCompoundButtonChecked(R.id.my_checkbox, true)

// Check a radio group.
remoteView.setRadioGroupChecked(R.id.my_radio_group, R.id.radio_button_2)

// Listen for check changes. The intent has an extra with the key
// EXTRA_CHECKED that specifies the current checked state of the view.
remoteView.setOnCheckedChangeResponse(
    R.id.my_checkbox,
    RemoteViews.RemoteResponse.fromPendingIntent(onCheckedChangePendingIntent)
)

İki düzen sağlayın: Biri res/layout-v31 içinde Android 12 veya sonraki sürümleri çalıştıran hedef cihazları, diğeri ise varsayılan res/layout klasöründe Android 11 veya önceki sürümleri hedeflemelidir.

Yuvarlatılmış köşeler kullanma

Dış arka plan ve iç orantılı yarıçapların hesaplanması standarttır ve paylaşılır. Önce Compose yaklaşımını kullanan geliştirmede bu, özel tema kaynaklarıyla birlikte Kotlin'de dinamik olarak ayarlanabilir.

Köşe yarıçaplarını uygulamak veya eski Android cihazlar için dinamik stiller ayarlamak istiyorsanız Glance belgelerindeki öncelikli olarak Compose'u kullanan Yuvarlak köşeler uygulama bölümüne bakın.