Bu sayfada, kullanıma sunulan isteğe bağlı widget geliştirmeleriyle ilgili ayrıntılar yer almaktadır. . Bu özellikler isteğe bağlıdır, ancak basit bir şekilde uygulanması ve kullanıcılarınızın widget'ı deneyimini yaşayın.
Dinamik renkler kullan
Android 12 sürümünden itibaren widget'larda cihazın tema renkleri kullanılabilir arka planlara ve diğer bileşenlere ihtiyacınız var. Bu şekilde daha akıcı ve tutarlılık sağlar.
Dinamik renkler elde etmenin iki yolu vardır:
Sistemin varsayılan temasını kullan (
@android:style/Theme.DeviceDefault.DayNight
) değerini alır.Şu öğedeki Materyal 3 temasını (
Theme.Material3.DynamicColors.DayNight
) kullanın: Şunun için Malzeme Bileşenleri: Android kitaplığını, Android için Materyal Bileşenleri'nden itibaren kullanabilirsiniz. sürüm 1.6.0.
Tema kök düzenine ayarlandıktan sonra renklerini almak için kökten veya altlarından herhangi birine eklenmiş olmalıdır.
Kullanabileceğiniz renk özelliklerine bazı örnekler:
?attr/primary
?attr/primaryContainer
?attr/onPrimary
?attr/onPrimaryContainer
Material 3 temasının kullanıldığı aşağıdaki örnekte cihazın tema rengi: "morumsu". Vurgu rengi ve widget arka planı açık ve koyu renklere uyarlanır değiştirebilirsiniz.
<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>
.
'nı inceleyin.
Dinamik renkler için geriye dönük uyumluluk
Dinamik renkler yalnızca Android 12 yüklü cihazlarda kullanılabilir
veya daha yüksek olabilir. Daha eski sürümler için özel bir tema sağlamak isterseniz varsayılan tema oluşturun
özel renklerinizle ve varsayılan değeri kullanarak yeni bir niteleyici (values-v31
) ile
özellikleri hakkında daha fazla bilgi edinin.
Aşağıda, Material 3 temasının kullanıldığı bir örnek verilmiştir:
/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>
Ses desteğini etkinleştir
Uygulama İşlemleri, Google Asistan'ın Alakalı kullanıcının sesli komutlarına yanıt olarak widget'ları görüntüleme. yerleşik amaçlara (BII'ler) yanıt verecek şekilde Uygulama, widget'ları Android ve Google Earth gibi Asistan yüzeylerinde proaktif olarak Android Auto. Kullanıcılara sabitleme seçeneği sunulur. widget'lar Asistan tarafından başlatıcıyı kullanabilir, gelecekte etkileşimi teşvik edebilirsiniz.
Örneğin, egzersiz uygulamanız için antrenman özeti widget'ını yapılandırabilirsiniz.
işlevini tetikleyen kullanıcının sesli komutlarını yerine getirmek için
GET_EXERCISE_OBSERVATION
BBI. Asistan, kullanıcılar bu BII'yi şu şekilde tetiklediğinde widget'ınızı proaktif olarak görüntüler:
"Ok Google, bu hafta şehirde kaç kilometre koşmuşum
Örnek uygulama?"
Çeşitli kullanıcı etkileşimi kategorilerini kapsayan düzinelerce BBI vardır. ses widget'larını geliştirmeleri için neredeyse tüm Android uygulamaları. Başlangıç olarak Uygulama İşlemleri'ni Android widget'larıyla entegre etme başlıklı makaleyi inceleyin.
Uygulamanızın widget seçici deneyimini iyileştirin
Android 12, cihazınızda widget seçici deneyimini iyileştirmenize olanak tanır. uygulamanıza dinamik widget önizlemeleri ve widget açıklamaları ekleyin.
Widget seçiciye ölçeklenebilir widget önizlemeleri ekleyin
Android 12'den itibaren widget önizlemesi widget seçici ölçeklenebilir. Bu dosyayı widget'ın varsayılan boyut. Önceden widget önizlemesi, URL'de sabit bir çekilebilir kaynaktı. bazı durumlarda önizlemelerin widget'ların nasıl göründüğünü yanlış şekilde yansıtmasına ana ekrana eklenirler.
Ölçeklenebilir widget önizlemelerini uygulamak için
previewLayout
özelliğini kullanarak XML düzeni sağlayın:appwidget-provider
<appwidget-provider
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
Gerçek widget'la aynı düzeni, gerçekçi varsayılan düzeniyle kullanmanızı öneririz
test etmek anlamına gelir. Çoğu uygulama aynı previewLayout
ve initialLayout
cihazını kullanır. Örneğin,
nasıl oluşturabileceğinize ilişkin daha fazla bilgi edinmek için, bu kılavuzda
sayfasını ziyaret edin.
Hem previewLayout
hem de previewImage
özelliğinin belirtilmesini öneririz.
Böylece uygulamanız, kullanıcının cihazı durumunda previewImage
kullanmaya düşebilir
previewLayout
desteklenmiyor. previewLayout
özelliği önceliklidir
ve previewImage
özelliğine karşılık geliyor.
Doğru önizlemeler oluşturmak için önerilen yaklaşımlar
Ölçeklenebilir widget önizlemelerini uygulamak içinpreviewLayout
XML düzeni sağlamak için appwidget-provider
öğesi:
<appwidget-provider
...
android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
.
Doğru bir önizleme göstermek için widget'ın kendisini doğrudan sağlayabilirsiniz düzeni varsayılan değerlere ayarlayın:
TextView
içinandroid:text="@string/my_widget_item_fake_1"
ayarlanıyor öğeler.Bir varsayılan resim veya yer tutucu resim ya da simge ayarlamak. Örneğin:
ImageView
bileşen içinandroid:src="@drawable/my_widget_icon"
.
Varsayılan değerler olmadan önizlemede yanlış veya boş değerler gösterilebilir. bu yaklaşımın önemli bir avantajı, size yerelleştirilmiş önizleme içerik.
ListView
içeren daha karmaşık önizlemelere yönelik önerilen yaklaşımlar için
GridView
veya StackView
, Dinamik içeren doğru önizlemeler oluşturma konusuna bakın
öğeleri inceleyin.
Ölçeklenebilir widget önizlemeleriyle geriye dönük uyumluluk
Android 11 (API düzeyi 30) veya önceki sürümlerde widget seçicilerin
widget'ını kullanıyorsanız previewImage
özelliğini gönderin.
Widget'ın görünümünü değiştirirseniz önizleme resmini güncelleyin.
Widget'ınız için açıklama ekleyin
Android 12'den itibaren widget için bir açıklama sağlayın widget'ınız için görüntülenecek seçici bulunur.
Şu öğenin description
özelliğini kullanarak widget'ınız için bir açıklama girin:
<appwidget-provider>
öğesi:
<appwidget-provider
android:description="@string/my_widget_description">
</appwidget-provider>
URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için
descriptionRes
özelliğini kullanın, ancak bu özellik widget tarafından yoksayılıyor
kullanabilirsiniz.
Daha yumuşak geçişler sağlayın
Android 12'den itibaren başlatıcılar daha sorunsuz bir geçiş sağlar Kullanıcı uygulamanızı bir widget'tan başlattığında.
Bu iyileştirilmiş geçişi etkinleştirmek için @android:id/background
veya
Arka plan öğenizi tanımlamak için android.R.id.background
:
// Top-level layout of the widget.
<LinearLayout
android:id="@android:id/background">
</LinearLayout>
Uygulamanız, Android'in önceki sürümlerinde @android:id/background
uygulamasını kullanabilir
ancak yok sayılır.
RemoteView'ların çalışma zamanında istenen değişikliği kullan
Android 12'den itibaren pek çok avantajdan yararlanabilirsiniz.
RemoteViews
çalışma zamanında değişiklik yapılmasını sağlayan RemoteViews
yöntem
özellikleri hakkında daha fazla bilgi edinin. RemoteViews
API'yi inceleyin
referans yöntemlerinin tam listesi için de kullanabilirsiniz.
Aşağıdaki kod örneğinde, bu yöntemlerden bazılarının nasıl kullanılacağı gösterilmektedir.
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);