自動調整圖示在裝置上保有一致性,但形狀會因裝置而異 其中只含一個開發人員提供的圖示素材資源。此外,圖示 支援兩層 (前景和背景),可用來 讓使用者享有絕佳視覺體驗
裝置實作器提供裝置遮罩,可決定裝置上所有圖示的形狀 裝置。這個圖示會用於採用啟動器圖示的所有系統 UI 介面 (例如啟動器、總覽、設定和共用工作表)。
範例和來源
程式碼範例:
platform/development/samples/AdaptiveIconSample/
開發人員說明文件:
原始碼:
platform/frameworks/base/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
實作
如要變更平台上的圖示形狀,請在
framework/base/core/res/res/values/config.xml
,如下所示:
<!-- 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>
字串的格式和語法遵循 W3,路徑的 SVG 標準 的定義。這個 PathData 格式是 Android 向量可繪項目 也可提供支援
這個路徑應採全形,並尊重內部安全區域 (66/71 = 91%) 查看邊界這會在其中一項 CTS 測試中強制執行。
如果您決定使用圓形做為平台遮罩,也請務必 config_useRoundIcon = true。如果沒有,請將此設定值設為 false 或不要 指定此設定值
自動調整圖示 API
AdaptiveIconDrawable
類別的 API 如下所示:
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(); }
參照實作
您不需要對任何 系統 UI 介面。當 PackageManager 傳回可繪項目時,只需將其繫結至 ImageView。這是在 Pre-O 大會平台上呈現的圖示。
關於轉譯動態動態效果,啟動器 3 (平台/套件/應用程式/啟動器 3) 會提供參考實作, 如何在 O-MR1 中達到效果
驗證
如要驗證實作項目,在覆寫喜歡的遮罩後,請參閱 圖示是否在 Launcher3、設定、總覽和設定中正確顯示。 您也可以執行 AdaptiveIconDrawableTest.java 和 AdaptiveIconMaskTest.java ,以測試實作結果
如需建議的手動測試案例,請前往: Platform/development/samples/AdaptiveIconSample/。
已知問題
已知問題包括:
- 模糊圖示視遮罩路徑的定義方式而定。
- 放大的捷徑圖示 (如果應用程式開發人員未使用
Icon.createWithAdaptiveBitmap()
方法,或不要使用這個方法 正確做法。如要讓這個方法正常運作,應使用點陣圖中傳遞的 四邊增加了 25%
這些問題的解決方式如下:
- 遮罩應在 [0, 100] x [0, 100] 座標系統中定義。
- 請確認用於自動調整圖示的圖片 (啟動器圖示、捷徑) 的四個邊都有足夠的邊框間距 (25%)。