note_35:Image Asset和mipmap-anydpi-v26

Image Asset和mipmap-anydpi-v26


因爲build.gradle裏面寫的targetSdkVersion低於26,而且也只是在安卓8.1以下的設備跑過,所以根本沒有發現應用圖標有問題。直到前幾天,忽然發現apk裝到機器上之後根本沒有顯示mipmap-*dpi文件夾下的ic_launcher.png,而是顯示了系統自帶的那個綠底白色的android機器人圖標。

因爲後來升級了Android Studio,所以在manifest.xml中發現多了個ic_launcher.xmlic_launcher_round.xml的文件,這兩個文件放在mipmap-anydpi-v26的文件夾下。

在這裏插入圖片描述

原本以爲ic_launcher_backgroundic_launcher_foreground應該是個圖片,沒想到是個<vector></vector>xml文件。而這個ic_launcher_foreground預覽的時候可以看到就是白色的機器人。

在這裏插入圖片描述



方法1:刪掉mipmap-anydpi-v26

StackOverflow上有一個推薦的回答,就是把mipmap-anydpi-v26這個文件夾刪去,因爲刪去之後系統沒機會找ic_launcher.xml。對於安卓8.1來說,系統會優先讀mipmap-anydpi-v26裏的ic_launcher來匹配圖標,而不是像8.1以下的那樣直接讀取mipmap-*dpi。然而,我的圖標還是沒有顯示出來。於是找到了博客說可以new一個Image Asset來改圖標。


方法2:用Image Asset來製作adaptive icon

首先,確保build.gradle裏面的buildSdk是26或以上的,否則沒辦法操作Image Asset裏的Resize。

mipmap-anydpi-v26 -> New -> Image Asset

在這裏插入圖片描述

打開之後是這樣的
在這裏插入圖片描述

Foreground Layer就是圖標的圖案(白色機器人),Background Layer是背景(綠色底)。

Name就是生成的這個icon的名字,如果不改名的話,那麼用Image Asset製作出來的icon就會替代原來放在mipmap-*dpi裏的所有ic_launcheric_launcher_round。(當然會按照像素匹配)

Source Asset裏面的Path就是自定義的icon,因爲系統只生成一張icon,然後再把這些icon製作出不同的dpi類型的icon,所以Path裏面要選擇*dpi最高的那張圖片,否則出來的icon一轉成xhdpi之後就會變得特別模糊。

當選擇了一張圖片之後,
在這裏插入圖片描述

右上角的Preview裏面有很多個dpi可以預覽。現在很明顯可以看出這個圖片過大,所以需要在左下角Resize進行操作。

在這裏插入圖片描述

ic_launcher_foreground至少把圖案放在那個安全區的圓圈裏面。接下來就是ic_launcher_background。

在這裏插入圖片描述
如果不是要用圖片疊加的話,那麼Asset Type可以直接選Color而不選Image。
在這裏插入圖片描述
然後Next,再保存就行了。

這時重新打開ic_launcher.xml就會變成這樣
在這裏插入圖片描述
重新打開ic_launcher.png,原來的綠底白機器人會被替換掉
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章