Uyarlanabilir simgeler uygulayın

Uyarlanabilir Simgeler, cihaz içinde tutarlı bir şekil korur ancak geliştirici tarafından sağlanan tek bir simge varlığıyla cihazdan cihaza farklılık gösterir. Ayrıca simgeler, kullanıcılara görsel zevk sunmak amacıyla hareket için kullanılabilecek iki katmanı (ön plan ve arka plan) destekler.

Cihaz uygulayıcıları, bir cihazdaki tüm simgelerin şekline karar verecek bir cihaz maskesi sağlar. Bu simge, Başlatıcı Simgelerini kullanan tüm sistem kullanıcı arayüzü yüzeylerinde (örneğin, başlatıcı, genel bakış, ayarlar ve paylaşım sayfası) kullanılacaktır.

Örnekler ve kaynak

Kod örnekleri:

  • platform/development/samples/AdaptiveIconSample/

Geliştirici belgeleri:

Kaynak kodu:

  • platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java

Uygulama

Bir platformdaki simgenin şeklini değiştirmek için, framework/base/core/res/res/values/config.xml dosyasına aşağıdaki gibi bir dize yerleştirin:

<!-- 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özdizimi , yol tanımına ilişkin W3, SVG standardına uygundur. PathData için bu format, Android vektör çizimlerinin de desteklediği formattır.

Bu yol dışbükey olmalı ve görüş sınırları içindeki güvenli bölgeye (66/71 = %91) uymalıdır. Bu, CTS testlerinden birinde uygulanır.

Platform maskesi olarak bir daire kullanmaya karar verirseniz, config_useRoundIcon = true öğesini de kapladığınızdan emin olun. Değilse, bu yapılandırma değerini false olarak ayarlayın veya bu yapılandırma değerini belirtmeyin.

Uyarlanabilir Simge API'si

AdaptiveIconDrawable sınıfına ilişkin API aşağıda gösterilmiştir:

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ı

Statik uyarlanabilir simgeleri Sistem Kullanıcı Arayüzü yüzeylerinden herhangi birinde oluşturmak için hiçbir şey yapılmasına gerek yoktur. PackageManager bir çizilebilir öğe döndürdüğünde, bunu bir ImageView'a bağlamanız yeterlidir. Simgeler Pre-O platformlarında zaten bu şekilde işleniyor.

Dinamik hareket efektinin oluşturulmasıyla ilgili olarak, Launcher3 (platform/paketler/uygulamalar/Launcher3), O-MR1'de efektin nasıl elde edileceğini gösteren bir referans uygulamasına sahip olacaktır.

Doğrulama

Uygulamayı doğrulamak için beğeni maskesini geçersiz kıldıktan sonra Başlatıcı3, Ayarlar, Genel Bakış ve Ayarlar'da simgelerin doğru şekilde oluşturulup oluşturulmadığına bakın. Uygulamayı test etmek için CTS TestCase grafiklerinin içinde AdaptiveIconDrawableTest.java ve AdaptiveIconMaskTest.java'yı da çalıştırabilirsiniz.

Önerilen bir manuel test senaryosunu şu adreste bulabilirsiniz: platform/development/samples/AdaptiveIconSample/.

Bilinen Sorunlar

Bilinen sorunlar aşağıdakileri içerir:

  • Maske yolunun nasıl tanımlandığına bağlı olarak bulanık simgeler.
  • Uygulama geliştiricilerinin Icon.createWithAdaptiveBitmap() yöntemini kullanmaması veya bu yöntemi düzgün kullanmaması durumunda yakınlaştırılmış kısayol simgeleri. Bu yöntemin düzgün çalışması için, Bitmap'te aktarılanın dört tarafının da %25'i doldurulmalıdır.

Bu sorunlar şu ş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 görsellerin dört tarafında da yeterli dolgu (%25) olduğundan emin olun.