web-dev-qa-db-fra.com

Qu'est-ce que mipmap-anydpi-v26 dans le répertoire res de Android Studio 3.0?

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.

30
0xAliHn

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>
24
tyczj

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.

10
Aniket Thakur

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+.

4
0xAliHn