Uyarlanabilir Simgeler, cihaz içinde tutarlı bir şekil sağlar ancak cihazdan cihaza değişiklik gösterir Geliştirici tarafından sağlanan yalnızca bir simge öğesi olan cihaz Ayrıca simgeler iki katmanı (ön ve arka plan) destekler. kullanıcılara görsel bir deneyim sunar.
Cihaz uygulayıcıları, bir cihazdaki tüm simgelerin şeklini belirleyen bir olanak tanır. Bu simge, Başlatıcı Simgelerinin kullanıldığı tüm sistem kullanıcı arayüzü yüzeylerinde kullanılacaktır. (ör. başlatıcı, genel bakış, ayarlar ve sayfayı paylaş).
Örnekler ve kaynak
Kod örnekleri:
platform/development/samples/AdaptiveIconSample/
Geliştirici dokümanları:
Kaynak kod:
platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
Uygulama
Bir platformda simgenin şeklini değiştirmek için
framework/base/core/res/res/values/config.xml
, şöyle:
<!-- 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>
Dizenin biçimi ve söz dizimi, yol için W3, SVG standardına göre belirlenir. tanımı. PathData için bu biçim, Android vektör çekilebilir öğeleridir desteği de sunulur.
Bu yol dışbükey olmalıdır ve içindeki güvenli bölgeye (66/71 = %91) uymalıdır görünüm sınırlarını korur. Bu, CTS testlerinden birinde uygulanır.
Platform maskesi olarak bir daire kullanmaya karar verirseniz, config_useRoundIcon = true. Değilse bu yapılandırma değerini false (yanlış) olarak ayarlayın veya kullanmayın. bu yapılandırma değerini belirtin.
Uyarlanabilir Simge API'si
AdaptiveIconDrawable
sınıfı için API aşağıda gösterilmektedir:
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(); }
Referans uygulaması
Sistem kullanıcı arayüzü yüzeyleri. PackageManager bir çekilebilir döndüğünde, bunu şuraya bağlayın: ImageView oluşturabilirsiniz. Simgeler, işlem öncesi platformlarda bu şekilde oluşturulur.
Dinamik hareket efekti oluşturma hakkında, Başlatıcı3 (platform/packages/apps/Launcher3), şunu gösteren bir referans uygulaması içerir: O-MR1'de etkinin nasıl elde edileceğini konuştuk.
Doğrulama
Uygulamayı doğrulamak için, istedikleri maskeyi geçersiz kıldıktan sonra Başlatıcı, Ayarlar, Genel Bakış ve Ayarlar'da simgeler doğru şekilde oluşturulup oluşturulmadığını kontrol etmenizi sağlar. AdaptiveIconDrawableTest.java ve AdaptiveIconMaskTest.java'yı da çalıştırabilirsiniz test etmek için grafik CTS TestCase'ın
Önerilen bir manuel test durumu şu adreste bulunabilir: platform/geliştirme/örnekler/AdaptiveIconSample/ ile ilgili bilgileri bulabilirsiniz.
Bilinen sorunlar
Bilinen sorunlar arasında aşağıdakiler yer alır:
- Maske yolunun nasıl tanımlandığına bağlı olarak bulanık simgeler.
- Uygulama geliştiriciler
Icon.createWithAdaptiveBitmap()
yöntemini kullanın veya bu yöntemi kullanmayın gerekir. Bu yöntemin düzgün çalışması için Bit eşlem'de iletilen işlevi kenarların% 25'lik dolgusuyla kaplıdır.
Bu sorunlar aşağıdaki şekilde ele alınabilir:
- Maske, [0, 100] x [0, 100] koordinat sisteminde tanımlanmalıdır.
- Uyarlanabilir simgeler (başlatıcı simgeleri , kısayollar) için kullanılan resimlerin dört tarafın hepsinde yeterli dolgu (%25) olmalıdır.