Ikon Adaptif mempertahankan bentuk yang konsisten di dalam perangkat, tetapi bervariasi dari satu perangkat ke perangkat lainnya perangkat dengan hanya satu aset ikon yang disediakan oleh pengembang. Selain itu, ikon mendukung dua lapisan (latar depan dan latar belakang) yang dapat digunakan untuk gerakan memberikan kesenangan visual bagi pengguna.
Pengimplementasi perangkat menyediakan mask perangkat yang akan menentukan bentuk semua ikon pada perangkat seluler. Ikon ini akan digunakan di platform UI sistem apa pun yang menggunakan Ikon Peluncur (misalnya, peluncur, ringkasan, setelan, dan sheet berbagi).
Contoh dan sumber
Contoh kode:
platform/development/samples/AdaptiveIconSample/
Dokumentasi developer:
Kode sumber:
platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
Implementasi
Untuk mengubah bentuk ikon di sebuah {i>platform<i}, tempatkan satu {i>string<i} di
framework/base/core/res/res/values/config.xml
, sebagai berikut:
<!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. --> <string name="config_icon_mask" translatable="false">"M50,0L100,0 100,100 0,100 0,0z"</string>
Format dan sintaksis string mengikuti standar W3, SVG untuk jalur definisinya. Format untuk PathData inilah yang menjadi vektor drawable Android dukungan teknis IT.
Jalur ini harus konveks dan harus mematuhi zona aman (66/71 = 91%) dalam batas tampilan. Hal ini diterapkan di salah satu uji CTS.
Jika Anda memutuskan untuk menggunakan lingkaran sebagai {i>mask<i} platform, pastikan juga untuk menempatkan config_useRoundIcon = true. Jika tidak, tetapkan nilai konfigurasi ini ke salah (false) atau jangan menentukan nilai konfigurasi ini.
API Ikon Adaptif
API untuk class AdaptiveIconDrawable
ditampilkan di bawah ini:
package android.graphics.drawable; public class AdaptiveIconDrawable extends Drawable implements Drawable.Callback { method public Drawable getBackground(); method public Drawable getForeground(); method public Path getIconMask(); method public Region getSafeZone(); method public float getExtraInsetFraction(); method public int getOpacity(); method public void invalidateDrawable(Drawable); method public void scheduleDrawable(Drawable, Runnable, long); method public void setAlpha(int); method public void setColorFilter(ColorFilter); method public void setOpacity(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); }
public class Icon extends Parceleable { method public Bitmap createWithAdaptiveBitmap(); }
Penerapan referensi
Tidak ada yang perlu dilakukan untuk merender ikon adaptif statis pada Platform UI sistem. Saat PackageManager menampilkan drawable, cukup ikatkan hal itu dengan ImageView. Beginilah cara ikon dirender di platform Pre-O.
Mengenai rendering efek gerakan dinamis, Peluncur (platform/paket/aplikasi/Launcher3) akan memiliki implementasi referensi yang menampilkan cara mencapai efek dalam O-MR1.
Validasi
Untuk memvalidasi implementasi, setelah mengganti {i>mask<i} yang mereka sukai, lihat jika ikon dirender dengan benar di Launcher3, Settings, Overview, dan Settings. Anda juga dapat menjalankan AdaptiveIconDrawableTest.java dan AdaptiveIconMaskTest.java di dalam grafik CTS TestCase untuk menguji implementasinya.
Kasus pengujian manual yang direkomendasikan dapat ditemukan di: platform/pengembangan/samples/AdaptiveIconSample/.
Masalah umum
Masalah umum meliputi:
- Ikon buram, bergantung pada cara jalur mask ditentukan.
- Ikon pintasan yang diperbesar jika developer aplikasi tidak menggunakan
Icon.createWithAdaptiveBitmap()
, atau tidak gunakan metode ini mereka dapat terus berjalan dengan baik. Agar metode ini berfungsi dengan baik, Bitmap yang diteruskan harus berupa diberi padding 25% di keempat sisinya.
Masalah ini dapat diatasi sebagai berikut:
- Masker harus didefinisikan dalam sistem koordinat [0, 100] x [0, 100].
- Pastikan gambar yang digunakan untuk ikon adaptif (ikon peluncur , pintasan) memiliki padding yang cukup (25%) di keempat sisinya.