Adaptive Symbole behalten auf dem jeweiligen Gerät eine einheitliche Form bei, unterscheiden sich aber von Gerät zu Gerät. Gerät mit nur einem vom Entwickler bereitgestellten Symbol-Asset. Außerdem können Symbole unterstützen zwei Ebenen (Vorder- und Hintergrund), die für Bewegung genutzt werden können. die Nutzenden visuell ansprechend sind.
Geräte-Implementer stellen eine Gerätemaske bereit, die die Form aller Symbole auf einem . Dieses Symbol wird auf allen System-UI-Oberflächen verwendet, auf denen Launcher-Symbole verwendet werden (z. B. Launcher, Übersicht, Einstellungen und Share Sheet)
Beispiele und Quelle
Codebeispiele:
platform/development/samples/AdaptiveIconSample/
Entwicklerdokumentation:
- <ph type="x-smartling-placeholder"></ph> Adaptive Symbole
- <ph type="x-smartling-placeholder"></ph> AdaptiveIconDrawable
- <ph type="x-smartling-placeholder"></ph> createWithAdaptiveBitmap
Quellcode:
platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
Implementierung
Um die Form des Symbols auf einer Plattform zu ändern, legen Sie
framework/base/core/res/res/values/config.xml
so:
<!-- 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 und Syntax der Zeichenfolge entsprechen dem W3-, SVG-Standard für Pfad- Definition. Dieses Format für PathData ist das, was Android Vektor-Drawables Support.
Dieser Pfad sollte konvex sein und die sichere Zone (66/71 = 91%) innerhalb die Ansichtsgrenzen aus. Dies wird in einem der CTS-Tests durchgesetzt.
Wenn du einen Kreis als Plattformmaske verwenden möchtest, blende config_useRoundIcon = true. Falls nicht, legen Sie diesen Konfigurationswert auf „falsch“ fest oder geben Sie ihn nicht an. geben Sie diesen Konfigurationswert an.
Adaptive Icon API
Hier die API für die Klasse AdaptiveIconDrawable
:
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(); }
Referenzimplementierung
Zum Rendern der statischen adaptiven Symbole auf den Oberflächen der System-UI Wenn PackageManager ein Drawable zurückgibt, ein ImageView. So werden Symbole bereits auf Pre-O-Plattformen gerendert.
Zum Rendern des dynamischen Bewegungseffekts hat Launcher3 (platform/packages/apps/Launcher3) enthält eine Referenzimplementierung, wie man den Effekt in O-MR1 erzielt.
Zertifizierungsstufe
Um die Implementierung nach dem Überschreiben der gewünschten Maske zu validieren, siehe Korrekte Darstellung von Symbolen in Launcher3, Einstellungen, Übersicht und Einstellungen Sie können auch AdaptiveIconDrawableTest.java und AdaptiveIconMaskTest.java ausführen. Grafik-CTS TestCase testen, um die Implementierung zu testen.
Einen empfohlenen manuellen Testfall finden Sie unter: Plattform/Entwicklung/Beispiele/AdaptiveIconSample/.
Bekannte Probleme
Zu den bekannten Problemen gehören:
- Verschwommene Symbole, je nachdem, wie der Maskenpfad definiert ist.
- Vergrößerte Verknüpfungssymbole, wenn App-Entwickler die
Icon.createWithAdaptiveBitmap()
oder verwenden Sie diese Methode nicht. ordnungsgemäß funktioniert. Damit diese Methode ordnungsgemäß funktioniert, sollte die in Bitmap übergebene Bitmap so aussehen: auf allen vier Seiten um 25% aufgefüllt.
Diese Probleme können so behoben werden:
- Die Maske sollte im Koordinatensystem [0, 100] x [0, 100] definiert werden.
- Achten Sie darauf, dass Bilder, die für adaptive Symbole verwendet werden (Launcher-Symbole, Verknüpfungen), haben eine ausreichende Füllung (25%) auf allen vier Seiten.