0xA*_*iHn 33 android android-mipmap android-studio-3.0
在Android Studio 3.0中,一旦我们创建了一个项目,mipmap-anydpi-v26就会在res目录中自动创建一个名为的文件夹.它实际上做了什么?我们为什么需要它?我们如何将其用于开发目的?
此外,在项目设置后,此文件夹中会自动创建两个XML文件.为什么这些XML文件驻留在mipmap文件夹中?我认为我们应该将所有XML文件保存在drawable文件夹而不是mipmap中.
tyc*_*czj 25
Android Studio 3会为您的应用创建一个自适应图标,该图标仅适用于SDK 26及更高版本.应将启动器图标放入mipmap文件夹中.
如果查看清单,可以看到它的引用 ic_launcher
android:icon="@mipmap/ic_launcher"
Run Code Online (Sandbox Code Playgroud)
如果您查看mipmap文件夹,您会看到正常的5个不同的启动器图标,这些图标将用于低于SDK 26的任何内容.对于SDK 26及更高版本,它使用文件anydpi-v26夹中的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="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Run Code Online (Sandbox Code Playgroud)
Ani*_*kur 12
上面的两个答案给出了很好的mipmap-anydpi-v26文件夹的总结,但我觉得为什么缺少部分.所以我的2美分.
anydpi:这些资源在任何dpi中都优先.因此,即使您拥有mipmap-hdpi或mipmap-mdpi匹配当前设备密度,也始终会获取来自mipmap-anydpi的资源.
anydpi-v26:这是对anydpi的额外过滤器.这表示只有当SDK/API级别为26或更高(Oreo)时,anydpi-v26无论设备密度如何,都将始终从资源中获取资源.
所以你可以有mipmap-anydpi-v26或drawable-anydpi-v26.所有资源文件夹都将遵循上述逻辑.
现在我们知道"为什么mipmap-anydpi-v26"的答案?让我们试着理解为什么"mipmap-anydpi-v26/ic_launcher.xml".
这是因为ic_launcher.xml用于描述您的应用的自适应图标,仅在SDK 26及更高版本中提供,如其他答案所述.希望这可以帮助.
我找到了一个关于这个的解释,这里有一些上下文:
要添加一个自适应图标来替换 API 26+ 设备上的所有 PNG,您将添加一个如下所示的res/mipmap-anydpi-v26/ic_launcher.xml文件:
<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>
Run Code Online (Sandbox Code Playgroud)
通过将它放在mipmap-anydpi-v26文件夹中,资源系统将优先使用它而不是其他 dpi 文件夹中的任何文件(正是你想要的,因为这个文件正在替换所有这些文件)并且它应该只在 API 26+ 设备中使用.
| 归档时间: |
|
| 查看次数: |
21775 次 |
| 最近记录: |