Halaman ini menyertakan detail untuk peningkatan widget opsional yang tersedia mulai Android 12 (level API 31). Fitur ini bersifat opsional, tetapi mudah diterapkan dan meningkatkan pengalaman widget pengguna.
Untuk mengetahui cara tambahan untuk meningkatkan widget, lihat panduan Compose Meningkatkan Widget.
Menggunakan warna dinamis
Mulai Android 12, widget dapat menggunakan warna tema perangkat untuk tombol, latar belakang, dan komponen lainnya. Hal ini memberikan transisi dan konsistensi yang lebih lancar di berbagai widget.
Ada dua cara untuk mendapatkan warna dinamis:
Gunakan tema default sistem (
@android:style/Theme.DeviceDefault.DayNight) di tata letak root.Gunakan tema Material 3 (
Theme.Material3.DynamicColors.DayNight) dari library Komponen Material untuk Android, yang tersedia mulai Komponen Material untuk Android v1.6.0.
Setelah tema ditetapkan di tata letak root, Anda dapat menggunakan atribut warna umum di root atau salah satu turunannya untuk mengambil warna dinamis.
Beberapa contoh atribut warna yang dapat Anda gunakan adalah sebagai berikut:
?attr/primary?attr/primaryContainer?attr/onPrimary?attr/onPrimaryContainer
Pada contoh berikut yang menggunakan tema Material 3, warna tema perangkat adalah "ungu". Warna aksen dan latar belakang widget disesuaikan untuk mode terang dan gelap, seperti yang ditunjukkan pada gambar 1 dan 2.
<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 android:layout_width="wrap_content" android:layout_height="wrap_content" app:tint="?attr/colorPrimaryContainer" android:src="@drawable/ic_cloud" /> <!-- Other widget content. --> </LinearLayout>
Kompatibilitas mundur untuk warna dinamis
Warna dinamis hanya tersedia di perangkat yang menjalankan Android 12 atau yang lebih tinggi. Untuk menyediakan tema kustom untuk versi yang lebih rendah, buat tema default dengan warna kustom dan kualifikasi baru (values-v31) menggunakan atribut tema default.
Berikut ini adalah contoh yang menggunakan tema Material 3:
/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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="?android:attr/colorBackground" android:theme="@style/MyWidgetTheme" />
Mengaktifkan dukungan suara
Action Aplikasi memungkinkan Asisten Google menampilkan widget sebagai respons terhadap perintah suara pengguna yang relevan. Dengan mengonfigurasi widget Anda untuk merespons intent bawaan (BII), aplikasi Anda dapat secara proaktif menampilkan widget di platform Asisten seperti Android dan Android Auto. Pengguna memiliki opsi untuk menyematkan widget yang ditampilkan oleh Asisten ke peluncur mereka, sehingga mendorong interaksi di masa mendatang.
Misalnya, Anda dapat mengonfigurasi widget ringkasan latihan fisik untuk aplikasi olahraga Anda guna memenuhi perintah suara pengguna yang memicu GET_EXERCISE_OBSERVATION BII. Asisten secara proaktif menampilkan widget Anda saat pengguna memicu BII ini dengan
membuat permintaan seperti, "Ok Google, berapa mil yang saya tempuh minggu ini di
ExampleApp?"
Ada puluhan BII yang mencakup beberapa kategori interaksi pengguna, sehingga hampir semua aplikasi Android dapat meningkatkan widgetnya untuk suara. Untuk memulai, lihat Mengintegrasikan Action Aplikasi dengan widget Android.
Mengaktifkan transisi yang lebih lancar
Di Android 12, peluncur memberikan transisi yang lebih lancar saat pengguna meluncurkan aplikasi Anda dari widget.
Untuk mengaktifkan transisi yang telah ditingkatkan ini, gunakan @android:id/background atau android.R.id.background untuk mengidentifikasi elemen latar belakang Anda:
<!-- Top-level layout of the widget. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/background" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout>
Aplikasi Anda dapat menggunakan @android:id/background di Android versi sebelumnya tanpa error, tetapi akan diabaikan.
Menggunakan modifikasi runtime RemoteView
Mulai Android 12, Anda dapat memanfaatkan beberapa metode RemoteViews yang menyediakan modifikasi runtime atribut RemoteViews. Lihat referensi API RemoteViews
untuk mengetahui daftar lengkap metode yang ditambahkan.
Contoh kode berikut menunjukkan cara menggunakan beberapa metode ini.
// 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_DIP )