Dans Android Studio 3.0, une fois le projet créé, un dossier nommé mipmap-anydpi-v26
est automatiquement créé dans le répertoire res
. Que fait-il réellement? Pourquoi en avons-nous besoin? Comment allons-nous l'utiliser à des fins de développement?
De plus, deux fichiers XML sont automatiquement créés dans ce dossier après l’installation du projet. Pourquoi ces fichiers XML résident-ils dans un dossier mipmap? J'ai pensé que nous devrions garder tous les fichiers XML dans un dossier pouvant être dessiné au lieu de mipmap.
Android Studio 3 crée un icône adaptative pour votre application, disponible uniquement dans le SDK 26 et versions ultérieures. Les icônes de lanceur doivent être placées dans les dossiers du mipmap.
Si vous regardez votre manifeste, vous pouvez voir qu'il fait référence à ic_launcher
Android:icon="@mipmap/ic_launcher"
Si vous regardez dans votre dossier mipmap, vous verrez vos 5 icônes de lanceur normales qui seront utilisées pour les versions inférieures au SDK 26. Pour le SDK 26 et versions ultérieures, il utilise les fichiers XML du fichier anydpi-v26
dossier pour utiliser l'icône adaptative.
<?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>
Les deux réponses ci-dessus donnent un assez bon résumé de ce que fait le dossier mipmap-anydpi-v26
Mais je pense que pourquoi il manque une partie. Alors voici mes 2 cents.
anydpi: Ces ressources ont la priorité dans tous les dpi. Ainsi, même si vous avez mipmap-hdpi
Ou mipmap-mdpi
En correspondance avec la densité actuelle des périphériques, les ressources de mipmap-anydpi seront toujours récupérées.
anydpi-v26: Ceci est un filtre supplémentaire sur anydpi. Cela signifie que les ressources seront toujours récupérées à partir de anydpi-v26
Quelle que soit la densité de périphériques niquement si le niveau de SDK/API est égal ou supérieur à 26 (Oreo).
Vous pouvez donc avoir mipmap-anydpi-v26 ou drawable-anydpi-v26. Tous les dossiers de ressources suivront la logique ci-dessus.
Maintenant que nous connaissons la réponse de "pourquoi mipmap-anydpi-v26"? Essayons de comprendre pourquoi "mipmap-anydpi-v26/ic_launcher.xml".
En effet, ic_launcher.xml
Est utilisé pour décrire l'icône adaptative de votre application, disponible uniquement dans le SDK 26 et supérieur, comme indiqué dans d'autres réponses. J'espère que cela t'aides.
J'ai trouvé une explication à ce sujet, voici un contexte:
Pour ajouter une icône adaptative qui remplace tous les PNG sur les périphériques API 26+, vous devez ajouter un res/mipmap-anydpi-v26/ic_launcher.xml
fichier qui ressemble à ceci:
<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>
En le plaçant dans le mipmap-anydpi-v26
, le système de ressources l’utilisera de préférence par rapport aux fichiers des autres dossiers dpi (exactement ce que vous voulez, car ce fichier les remplace tous) et ne doit être utilisé que dans les périphériques API 26+.