Android 8.0 引入了自適應應用啟動圖標,可在不同的設備中顯示不同的圖標,如自適應圖標可以在一台設備上顯示為圓形,在另一台設備上顯示為方形,每個 OEM 廠商都會提供一個 mask,系統會自動將自適應圖標渲染成相同的形狀,自適應圖標也可以使用到設置、分享等想保持統一圖標風格的位置。
- 自適應圖標支持的 mask 因不同設備而不同
可通過定義背景和前景的兩個圖層來控制自適應圖標的外觀,必須提供一個沒有背景、沒有陰影的圖片作為圖標的形狀。
- 自適應圖標的前景、背景以及 mask
Android 7.1 (API 級別 25) 之前的啟動圖標在標準屏幕密度下是 48 * 48 dp,現在必須按照如下標準定義自適應圖標的圖層:
- 前景層和背景層的尺寸大小必須是 108 * 108 dp;
- mask 可視範圍的尺寸大小是 72 * 72 dp;
- 系統會在圖標外層預留 18dp 用以創建有趣的視覺效果,視覺效果因不同設備的啟動器而異
注意:OEM 廠商指定的遮罩半徑最短 33dp。
- 創建自適應圖標
創建自適應圖標可以使用 Android Studio 提供的 Image Asset Studio 工具,使用該工具可以創建各種不同類型的圖標,該工具會為每個通用屏幕密度生成一組具有相應分辨率的圖標,當然使用 Image Asset Studio 還可以生成其他需要適配的一系列圖標,下面是 Image Asset Studio 的操作界面,如下圖所示:
選擇前景和背景之後,Image Asset Studio 會自動生成相應分辨率的圖標文件,參考如下:
上述目錄中,目錄 mipmap-anydpi-v26 就是為 Android 8.0 以上創建的啟動器圖標,當 Target Sdk Version 為 API 26 之上的時候,系統會自動選擇該目錄下的圖標文件作為應用圖標文件,其圖標文件內容如下:
<!--ic_launchr.xml-->
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
上述文件中背景選擇的是顏色,前景是選擇的是一張圖片,最終生成的自適應圖標文件效果對比如下:
背景 | 前景 | 疊加效果 |
---|---|---|
#4E4C9E |
當然,如果是 Android 8.0 以前的版本,則會使用對應分辨率下的圖標文件,這樣就很方便的完成了圖標文件的適配。