Android 8.0系統的應用圖標適配


 版權聲明:本文為HaiyuKing原創文章,轉載請注明出處!

概述

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

為什么進行圖標適配?

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

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

可以看出來這種自動添加的圓角矩形非常丑,因此很多公司就索性直接將應用的圖標都設計成圓角矩形的,正好Android和iOS都用同一套圖標還省事了。

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

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

所以在Android 8.0系統中,Google下定決心要好好整治一下Android應用圖標的規范性了。

Android8.0應用圖標規范

從Android 8.0系統開始,應用程序的圖標被分為了兩層:前景層和背景層。也就是說,我們在設計應用圖標的時候,需要將前景和背景部分分離,前景用來展示應用圖標的Logo,背景用來襯托應用圖標的Logo。需要注意的是,背景層在設計的時候只允許定義顏色和紋理,但是不能定義形狀。

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

可以看到,這里背景層是一張藍色的網格圖,前景層是一張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或更高版本。

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

步驟2、准備一個前景層和一個背景層

比如,我們已支付寶logo為例:

前景層:

 

背景層:

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

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

先來看操作區域:

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

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

再來看預覽區域:

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

注意每個預覽圖標中都有一個圓圈,這個圓圈叫作安全區域,必須要保證圖標的前景層完全處於安全區域當中才行,否則可能會出現圖標被手機廠商的mask裁剪掉的情況。

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

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

點擊Next,最后點擊Finish

 可以看到項目中發生了變化:

步驟5、運行程序即可。

參考資料

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM