Uyarlanabilir simgeleri uygulama

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.