banner
jzman

jzman

Coding、思考、自觉。
github

Android 8.0自適應圖標

Android 8.0 引入了自適應應用啟動圖示,可在不同的設備中顯示不同的圖示,如自適應圖示可以在一台設備上顯示為圓形,在另一台設備上顯示為方形,每個 OEM 廠商都會提供一個 mask,系統會自動將自適應圖示渲染成相同的形狀,自適應圖示也可以使用到設定、分享等想保持統一圖示風格的位置。

  • 自適應圖示支援的 mask 因不同設備而不同

可通過定義背景和前景的兩個圖層來控制自適應圖示的外觀,必須提供一個沒有背景、沒有陰影的圖片作為圖示的形狀。

  • 自適應圖示的前景、背景以及 mask

Android 7.1 (API 級別 25) 之前的啟動圖示在標準螢幕密度下是 48 * 48 dp,現在必須按照如下標準定義自適應圖示的圖層:

  1. 前景層和背景層的尺寸大小必須是 108 * 108 dp;
  2. mask 可視範圍的尺寸大小是 72 * 72 dp;
  3. 系統會在圖示外層預留 18dp 用以創建有趣的視覺效果,視覺效果因不同設備的啟動器而異

注意:OEM 廠商指定的遮罩半徑最短 33dp。

  • 創建自適應圖示

創建自適應圖示可以使用 Android Studio 提供的 Image Asset Studio 工具,使用該工具可以創建各種不同類型的圖示,該工具會為每個通用螢幕密度生成一組具有相應解析度的圖示,當然使用 Image Asset Studio 還可以生成其他需要適配的一系列圖示,下面是 Image Asset Studio 的操作介面,如下圖所示:

image

選擇前景和背景之後,Image Asset Studio 會自動生成相應解析度的圖示檔案,參考如下:

image

上述目錄中,目錄 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>

上述檔案中背景選擇的是顏色,前景是選擇的是一張圖片,最終生成的自適應圖示檔案效果對比如下:

背景前景疊加效果
#4E4C9Eimageimage

當然,如果是 Android 8.0 以前的版本,則會使用對應解析度下的圖示檔案,這樣就很方便的完成了圖示檔案的適配。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。