Was ist mipmap-anydpi-v26 im res-Verzeichnis in Android Studio 3.0?

Lesezeit: 4 Minuten

Benutzer-Avatar
0xAliHn

Sobald wir in Android Studio 3.0 ein Projekt erstellt haben, wird ein Ordner mit dem Namen mipmap-anydpi-v26 wird automatisch in der erstellt res Verzeichnis. Was macht es eigentlich? Warum brauchen wir es? Wie werden wir es für Entwicklungszwecke nutzen?

Außerdem werden in diesem Ordner nach der Projekteinrichtung automatisch zwei XML-Dateien erstellt. Warum befinden sich diese XML-Dateien in einem Mipmap-Ordner? Ich dachte, wir sollten alle XML-Dateien in einem Drawable-Ordner statt in Mipmap aufbewahren.

  • welche XML-Dateien erstellt wurden

    – tyczj

    13. Juli 2017 um 12:50 Uhr

  • In meinem Fall wurde diese Datei zweimal erstellt –> res/mipmap-anydpi-v26/ic_launcher.xml

    – meyasir

    21. April 2018 um 22:52 Uhr


  • developer.android.com/guide/practices/ui_guidelines/…

    – M. Afrashteh

    20. Februar 2021 um 0:40 Uhr

Benutzer-Avatar
tyczj

Android Studio 3 erstellt eine adaptives Symbol für Ihre App, die nur in SDK 26 und höher verfügbar ist. Launcher-Icons sollten in den Mipmap-Ordnern abgelegt werden.

Wenn Sie sich Ihr Manifest ansehen, können Sie sehen, dass es darauf verweist ic_launcher

android:icon="@mipmap/ic_launcher"

Wenn Sie in Ihrem Mipmap-Ordner nachsehen, sehen Sie Ihre normalen 5 verschiedenen Launcher-Symbole, die für alles verwendet werden, was niedriger als SDK 26 ist. Für SDK 26 und höher werden die XML-Dateien von verwendet anydpi-v26 Ordner, um das adaptive Symbol zu verwenden.

<?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>

  • Bedeutet dies, dass Ihr “adaptives Symbol” nur in einer Bildgröße bereitgestellt werden muss und die Größe basierend auf der aktuellen dpi/Auflösung automatisch angepasst wird, oder stimmt das nicht? Wenn ersteres, wo platziere ich physisch das adaptive Icon-Bildpaar? Wenn letzteres der Fall ist, bedeutet dies, dass ich das Bild immer noch in mehrere Größen aufteilen und in die jeweiligen Ordner legen muss? (Wohlgemerkt, ich verwende Unity3d, also profitiere ich nicht von dem, was Android Studio automatisch bietet).

    – vargonisch

    18. September 2017 um 21:38 Uhr

  • Sie müssen immer noch Symbole mit unterschiedlicher Größe verwenden, aber sie werden im Mipmap-Ordner unter dem respektierten dpi-Ordner abgelegt

    – tyczj

    19. September 2017 um 13:00 Uhr

  • Vielen Dank. Ich bin immer noch verwirrt, warum die “drawable-“-Ordner nur durch scheinbar äquivalente “mipmap-“-Ordner ersetzt werden. Ich habe es aber zum Laufen gebracht.

    – vargonisch

    20. September 2017 um 17:56 Uhr

  • @vargonian android-developers.googleblog.com/2014/10/…

    – tyczj

    21. September 2017 um 14:37 Uhr

  • Mein Symbol wird von Kanten beschnitten. Ich möchte es zentralisieren, aber ic_launcher.xml bietet das nicht. Ich habe alle Dichten meines Symbols in den zugehörigen Ordnern abgelegt. Aber ic_launcher.xml schneidet mein Icon ab, sodass es nicht möglich ist, mein ganzes Icon zu sehen.

    – Hilal

    26. Oktober 2020 um 16:05 Uhr

Beide obigen Antworten geben eine ziemlich gute Zusammenfassung dessen, was mipmap-anydpi-v26 Ordner tut, aber ich fühle warum Teil fehlt. Also hier sind meine 2 Cent.

irgendeindpi: Diese Ressourcen haben in allen dpi Vorrang. Also auch wenn du hast mipmap-hdpi oder mipmap-mdpi Passend zur aktuellen Gerätedichte wird die Ressource von mipmap-anydpi immer abgerufen.

anydpi-v26: Dies ist ein zusätzlicher Filter über nur Anydpi. Dies besagt, dass Ressourcen immer abgeholt werden anydpi-v26 unabhängig von der Gerätedichte nur wenn SDK/API-Level 26 oder höher ist(Oreo).

Sie können also mipmap-anydpi-v26 oder drawable-anydpi-v26 haben. Alle Ressourcenordner folgen der obigen Logik.

Jetzt, da wir die Antwort auf “warum mipmap-anydpi-v26” kennen? Versuchen wir zu verstehen, warum “mipmap-anydpi-v26/ic_launcher.xml”.

Das ist weil ic_launcher.xml wird verwendet, um das adaptive Symbol für Ihre App zu beschreiben, das nur in SDK 26 und höher verfügbar ist, wie in anderen Antworten erwähnt. Hoffe das hilft.

  • Da scheint mehr dran zu sein. Da ich geändert habe, um nur v28 und darüber hinaus zu unterstützen, habe ich umbenannt mipmap-anydpi-v26 zu mipmap-anydpi – aber das hat die adaptiven Symbole durcheinander gebracht.

    – Martin

    16. Juli 2021 um 8:49 Uhr

Ich habe eine Erklärung dazu gefunden, hier ist ein Kontext:

Um ein adaptives Symbol hinzuzufügen, das alle PNGs auf Geräten mit API 26+ ersetzt, fügen Sie eine hinzu res/mipmap-anydpi-v26/ic_launcher.xml Datei, die so aussieht:

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

Durch die Platzierung in der mipmap-anydpi-v26 Ordner, wird das Ressourcensystem ihn allen Dateien in den anderen dpi-Ordnern vorziehen (genau das, was Sie wollen, da diese Datei alle ersetzt) ​​und dass er nur in API 26+-Geräten verwendet werden sollte.

  • Aber wenn ich den Inhalt des XML sehe, zeigt er auf einen Vektorgrafik-Codeblock. Nur um ehrlich zu sein, ich bin neu in der Vektorgrafik und würde jeden fragen, wie man mit dem aktuellen PNG umgeht, da mein Symbol etwas ist kompliziert und im Moment wird es sehr lange dauern, eine Vektorgrafik für mein PNG-Icon zu erstellen, also wie gehe ich damit vor?

    – Shri Krishna

    16. Mai 2018 um 12:02 Uhr

1144550cookie-checkWas ist mipmap-anydpi-v26 im res-Verzeichnis in Android Studio 3.0?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy