Android 8.0系統的應用圖標適配

 版權聲明:本文爲HaiyuKing原創文章,轉載請註明出處!android

概述

 參考資料《一塊兒來學習Android 8.0系統的應用圖標適配吧》中已經講得很清楚了,這裏我只是簡單總結下。詳情的內容請閱讀參考資料!安全

爲何進行圖標適配?

可能有些朋友以爲困惑,應用圖標這種東西從Android遠古時代就已經有了,並且功能格外的簡單,就是放張圖片而已,這有什麼好適配的呢?但實際上,在當前Android環境下,應用圖標功能是極其混亂的。能夠看到,在Android上,應用圖標能夠是方形、圓形、圓角矩形、或者是其餘任意不規則圖形。app

因爲Android操做系統是開源的,國內一些手機廠商在定製操做系統的時候就把這一特性給改了。好比小米手機,就選擇了向蘋果靠攏,強制要求應用圖標圓角化。若是某些應用的圖標不是圓角矩形的呢?小米系統會自動給它加上一個圓角的效果,以下圖所示:編輯器

能夠看出來這種自動添加的圓角矩形很是醜,所以不少公司就索性直接將應用的圖標都設計成圓角矩形的,正好Android和iOS都用同一套圖標還省事了。學習

可是這就讓Google不開心了,這不是變向強制要求開發者必須將圖標設計成圓角矩形嗎?因而在去年的Google I/O大會上,Google點名批評了小米的這種作法,說其違反了Android自由和開放的理念。gradle

除了變向強制要求應用圖標圓角化,小米的這種處理方式還有一個弊端,就是若是應用圖標的圓角弧度和小米系統要求的不一樣,那麼會出現異常醜陋的效果:ui

因此在Android 8.0系統中,Google下定決心要好好整治一下Android應用圖標的規範性了。spa

Android8.0應用圖標規範

從Android 8.0系統開始,應用程序的圖標被分爲了兩層:前景層和背景層。也就是說,咱們在設計應用圖標的時候,須要將前景和背景部分分離,前景用來展現應用圖標的Logo,背景用來陪襯應用圖標的Logo。須要注意的是,背景層在設計的時候只容許定義顏色和紋理,可是不能定義形狀。操作系統

那麼應用圖標的形狀由誰來定義呢?Google將這個權利就交給手機廠商了。不是有些手機廠商喜歡學習蘋果的圓角圖標嗎?沒問題,因爲應用圖標的設計分爲了兩層,手機廠商只須要在這兩層之上再蓋上一層mask,這個mask能夠是圓角矩形、圓形或者是方形等等,視具體手機廠商而定,就能夠瞬間讓手機上的全部應用圖標都變成相同的規範。原理示意圖以下:.net

能夠看到,這裏背景層是一張藍色的網格圖,前景層是一張Android機器人Logo圖,而後蓋上一層圓形的mask,最終就裁剪出了一張圓形的應用圖標。

那麼體如今項目代碼中如何呢?

打開AndroidManifest.xml文件,代碼以下所示:

這裏咱們須要關注的點是android:icon這個屬性,經過這個屬性,咱們將應用的圖標指定爲了mipmap目錄下的ic_launcher文件。另外你們可能注意到還有一個android:roundIcon屬性,這是一個只適用在Android 7.1系統上的過渡版本,很快就被8.0系統的應用圖標適配所替代了,咱們不用去管它。

應用圖標被指定爲了mipmap目錄下的ic_launcher文件,那麼咱們快去看下這個文件吧:

 

惟一須要咱們留意的就是mipmap-anydpi-v26這個目錄,這個目錄表示什麼意思呢?就是Android 8.0或以上系統的手機,都會使用這個目錄下的ic_launcher來做爲圖標。

你會發現,mipmap-anydpi-v26目錄下的ic_launcher並非一張圖片,而是一個XML文件:

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background"/>
    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

這是一個8.0系統應用圖標適配的標準寫法,在<adaptive-icon>標籤中定義一個<background>標籤用於指定圖標的背景層,定義一個<foreground>標籤用於指定圖標的前景層

背景層和前景層並非必定要用SVG格式的圖片,你也可使用普通的PNG、JPG等格式的圖片,甚至是直接指定一個背景色均可以。

判斷項目是否須要適配?

有些朋友可能會以爲這種分紅兩層的應用圖標設計太過於麻煩,不適配能夠嗎?也有些朋友可能會說,本身的APP並無作過應用圖標適配,在Android 8.0手機上也照樣跑得好好的。

事實上,這個新功能Google是準備讓它慢慢過渡的,而不是一次性就強推給全部的開發者。若是你的APP中的targetSdkVersion是低於26的,那麼就能夠不用進行應用圖標適配,Android 8.0系統仍然是向下兼容的。可是若是你將targetSdkVersion指定到了26或者更高,那麼Android系統就會認爲你的APP已經作好了8.0系統的適配工做,固然包括了應用圖標的適配。

因此,判斷標準是targetSdkVersion的值是否>=26。

如何適配Android8.0應用圖標?

前提:使用Android Studio 3.0或更高版本。

步驟一、打開app/build.gradle文件檢查一下,確保targetSdkVersion已經指定到了26或者更高

步驟二、準備一個前景層和一個背景層

好比,咱們已支付寶logo爲例:

前景層:

 

背景層:

步驟三、app右鍵——New——Image Asset

這個Asset Studio編輯器很是簡單好用,一學就會。左邊是操做區域,右邊是預覽區域。

先來看操做區域:

第一行的Icon Type保持默認就能夠了,表示同時建立兼容8.0系統以及老版本系統的應用圖標。

第二行的Name用於指定應用圖標的名稱,這裏也保持默認便可。接下來的三個頁籤,Foreground Layer用於編輯前景層,Background Layer用於編輯背景層,Legacy用於編輯老版本系統的圖標。

再來看預覽區域:

這個就十分簡單了,用於預覽應用圖標的最終效果。在預覽區域中給出了可能生成的圖標形狀,包括圓形、圓角矩形、方形等等。

注意每一個預覽圖標中都有一個圓圈,這個圓圈叫做安全區域,必需要保證圖標的前景層徹底處於安全區域當中才行,不然可能會出現圖標被手機廠商的mask裁剪掉的狀況。

步驟四、選擇前景層、背景層圖標或者顏色,調整大小,使其在安全區域中

注意:主要是調整前景層圖標的縮放大小

點擊Next,最後點擊Finish

 能夠看到項目中發生了變化:

步驟五、運行程序便可。

參考資料

一塊兒來學習Android 8.0系統的應用圖標適配吧

相關文章
相關標籤/搜索