drawable 和 mipmap 不得不说的故事

一、图片到底存到哪个目录下

  1. Google 官方推荐,mipmap 文件夹下仅仅存放应用启动图标

  2. 其他的 png 图片和 .9.png 等图片还是存放在相应的 drawable 目录

二、如何自动创建响应的 drawable 目录

AndroidStudio 项目默认只有一个 drawable 目录,而没有对应的 -hdpi 等目录,解决方式如下:

需要修改 androidStudio 的默认配置文件

  1. 定位到 androidStudio 的安装目录:C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule

  2. 修改该文件夹下的 recipe.xml.ftl 文件

大概在 28 行的原文件一部分为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<#if !(isInstantApp!false) || (isBaseAtom!false)>
<mkdir at="${escapeXmlAttribute(resOut)}/drawable" />
<#if copyIcons && !isLibraryProject>
<#if buildApi gte 25 && targetApi gte 25>
<copy from="root/res/mipmap-hdpi/"
to="${escapeXmlAttribute(resOut)}/mipmap-hdpi/" />
<copy from="root/res/mipmap-mdpi"
to="${escapeXmlAttribute(resOut)}/mipmap-mdpi/" />
<copy from="root/res/mipmap-xhdpi"
to="${escapeXmlAttribute(resOut)}/mipmap-xhdpi/" />
<copy from="root/res/mipmap-xxhdpi"
to="${escapeXmlAttribute(resOut)}/mipmap-xxhdpi/" />
<copy from="root/res/mipmap-xxxhdpi"
to="${escapeXmlAttribute(resOut)}/mipmap-xxxhdpi/" />
<#else>

在 <mkdir 这一行之后添加如下代码:

1
2
3
4
<mkdir at="${escapeXmlAttribute(resOut)}/drawable-hdpi" />
<mkdir at="${escapeXmlAttribute(resOut)}/drawable-mdpi" />
<mkdir at="${escapeXmlAttribute(resOut)}/drawable-xhdpi" />
<mkdir at="${escapeXmlAttribute(resOut)}/drawable-xxhdpi" />

重启 androidStudio ,然后新建项目,就会发现已经有对应的 drawable 目录了