Neuere Versionen von Android Studio fügen nur zwei drawable-Verzeichnisse hinzu – drawable und drawable-v21

Lesezeit: 5 Minuten

Bournes Benutzeravatar
Bourne

Bei älteren Versionen von Android Studio wurden standardmäßig alle Drawable-Bucket-Ordner erstellt (z. B. drawable-mdpi, drawable-hdpi usw.). In neueren Versionen von Android Studio werden nur drawable und drawable-v21 bereitgestellt. Warum ist das so?

Gibt es einen Grund dafür, dass Android (in seiner unendlichen Weisheit) Ihnen die separaten Bucket-Ordner nicht mehr zur Verfügung stellt?

Nur zur Anmerkung, ich weiß, dass Sie sie einfach manuell hinzufügen können, aber ich möchte sicherstellen, dass es keinen neuen Best-Practice-Grund gibt, diese Ordner nicht mehr zu verwenden.

  • Ich erinnere mich, dass ich etwas darüber gelesen habe, dass es eine neue bewährte Methode gibt, die sie zu fördern versuchen – die Verwendung von SVG für Ihre Drawables anstelle von Rasterbildern, sodass Sie nur ein Bild benötigen, dessen Größe sauber geändert werden kann.

    – Alzee

    17. Dezember 2015 um 20:26 Uhr

  • Ich denke, das liegt teilweise an der Einführung des Mipmaps-Ordners

    – Benutzer2511882

    17. Dezember 2015 um 20:31 Uhr

  • Danke für den Hinweis. Soweit ich mich erinnere, unterstützen nur die neueren Versionen von Android nur SVG, sodass dies bei den meisten Projekten, an denen ich arbeite, nicht funktionieren würde, aber ich werde prüfen, ob dies der mögliche Grund ist. Und ich kann mich auch in der SVG-Sache irren, da ich nicht abwärtskompatibel bin, werde das überprüfen!

    – Bourne

    17. Dezember 2015 um 20:32 Uhr

  • @user2511882 Laut Google-Blog sollen Mipmaps nur für die App-Icons verwendet werden. Versuchen Sie also immer noch herauszufinden, wo die anderen Assets stecken sollen.

    – Bourne

    17. Dezember 2015 um 20:33 Uhr

  • @Bourne, welche Version ist das? 1,5?

    – Benutzer2511882

    17. Dezember 2015 um 20:34 Uhr

Bournes Benutzeravatar
Bourne

Vielen Dank an alle, die versucht haben zu helfen. Sie haben mir geholfen, die endgültige Antwort zu finden, aber keine Lösung war ganz richtig. @ user3137702 war wahrscheinlich am nächsten, da es mit der gesamten Umstellung auf Vektoren/SVGs zusammenhängt. Ich konnte keine endgültige Antwort finden, wie etwas direkt von Google (obwohl ich mir vorstelle, dass es da draußen ist), aber nach dem, was ich aus einer Reihe von Artikeln gesammelt habe, gibt es wahrscheinlich einen Grund, warum sie dies tun.

Für den Anfang sieht es so aus, als ob dies in Android Studio 1.4 begonnen hat. Ich bin gerade bei 1,5. Es scheint, dass sich Android in die Richtung bewegt, dass Sie nicht mehr Ihre eigenen Dichteordner (dh mdpi, hdpi usw.) für drawables erstellen müssen (mipmaps ist anders, also verwechseln Sie das bitte nicht mit dem, worüber ich spreche) . Ab Android Studio 1.4 werden die SVGs, die Sie in den regulären Drawable-Ordner (also nicht in den v21-Ordner) abgelegt haben, in PNGs konvertiert und während der Build-Sequenz für Sie in automatisch generierten Dichteordnern abgelegt (also Gradle erledigt dies im Wesentlichen für Sie) für alle Versionen, die älter als API 21 sind. Für 21 und höher wird SVG anders unterstützt, was ein ganz anderes Thema ist. Aber dies macht die SVG-Unterstützung im Wesentlichen rückwärtskompatibel bis hin zu API 1!!!

JEDOCH gibt es einen GROSSEN Haken. Diese SVG-Konvertierung ist nicht immer so erfolgreich, wie Sie vielleicht hoffen. Es unterstützt nur eine Teilmenge von SVG-Dateien, sodass es je nach Speicherart (dh welche Einstellungen beim Speichern angewendet werden) möglicherweise nicht richtig gerendert wird. Selbst häufig verwendete Einstellungen wie Verlaufs- und Musterfüllungen, lokale IRI-Referenzen und Transformationen werden (noch) NICHT unterstützt. Wenn Sie mit SVG-Dateien arbeiten, die Sie nicht erstellt haben, werden Sie wahrscheinlich Probleme beim Importieren haben. Wenn Sie oder jemand, mit dem Sie zusammenarbeiten, sie direkt generiert, müssen Sie möglicherweise damit experimentieren, wie Sie die Dateien speichern, und Sie sollten Builds häufig auf älteren Versionen von Android testen, um sicherzustellen, dass sie wie erwartet funktionieren.

Führen Sie die folgenden einfachen Schritte aus, um SVGs in Android Studio 1.4+ zu importieren:

  1. Klicken Sie mit der rechten Maustaste auf den res/drawable-Ordner
  2. Wählen Sie “Neu”
  3. Wählen Sie „Vektor-Asset“
  4. An dieser Stelle können Sie ein „Materialsymbol“ auswählen, das wirklich gut funktioniert, und es gibt eine Reihe schöner „kostenloser“ Symbole, aus denen Sie auswählen können. Für Indie-Entwickler ohne Icon-Design-Unterstützung ist das nett!
  5. ODER – Sie können “Lokale SVG-Datei” auswählen
  6. Wählen Sie dann mit der Option “Auswählen” eine SVG-Datei aus einer der beiden Optionen aus. WARNUNG: Hier könnte es möglicherweise schief gehen, wenn das von Ihnen importierte SVG nicht richtig gespeichert wird.
  7. Klicken Sie auf „Weiter“
  8. Vergewissern Sie sich, dass es an der richtigen Stelle gespeichert wird, und klicken Sie dann auf „Fertig stellen“.
  9. An diesem Punkt ist es referenzierbar mit: android:icon=”@drawable/ic_imagename” (natürlich unter Verwendung Ihres Bildnamens anstelle von ic_imagename)

Die Antwort von @CommonsWare war sehr hilfreich, um zur richtigen Lösung zu führen, aber nach dem, was ich gesehen habe, gab es beim Generieren mehrerer Variationen neuer Projekte aus verschiedenen Vorlagen- und Versionsunterstützungseinstellungen keine Möglichkeit, die alten Dichteordner tatsächlich automatisch generieren zu lassen . Hier passiert definitiv mehr als nur eine andere Template-Versionsauswahl. Aber wie er sagte, je nachdem, welche Vorlage/Version Sie auswählen, erhalten Sie möglicherweise einen anderen Satz dieser beiden zeichbaren Ordnertypen. Aber speziell zu meiner Frage scheint Android Studio diesen neuen Ansatz zu betonen, überhaupt keine eigenen Ordner mit zeichnbarer Dichte zu erstellen.

Es ist ziemlich cool, imo, aber es braucht noch etwas Arbeit. In der Praxis muss ich wahrscheinlich noch die Drawable-Density-Ordner hinzufügen, um alle Bilder zu unterstützen, mit denen ich arbeite, bis dieser Mechanismus alle Arten von SVG-Renderings etwas mehr unterstützt.

Und noch ein Leckerbissen – Da dies alles über Gradle (die eigentliche Generierung der Dichteordner) abgewickelt wird, können Sie Build-Einstellungen über den Geschmacksmechanismus hinzufügen, um einzuschränken, welche Dichteordner Sie erstellen möchten. Wenn Sie beispielsweise der Meinung sind, dass mdpi-Bilder das Ende ihrer Nützlichkeit für Ihre spezielle Benutzerbasis erreicht haben und diese Größe/Dichte aus Ihrer App herauslassen möchten, um ein paar MB von der App-Größe zu sparen, können Sie dies einstellen der Gradle-Build-Geschmack.

  • Ja, der Schlüssel ist, dass Sie auf „Neu“ -> „Vektor-Asset“ klicken müssen, um die XML-Zeichendatei aus der SVG-Datei zu erstellen.

    – IgorGanapolsky

    14. Januar 2016 um 21:44 Uhr

  • Ist das nur für SVGs ?? Ich möchte eine .PNG-Datei in drawable kopieren. Ich habe zwei Optionen drawable und drawable-v24. In welchen Ordner müssen wir kopieren ??

    – K Pradeep Kumar Reddy

    16. September 2020 um 9:13 Uhr

1436410cookie-checkNeuere Versionen von Android Studio fügen nur zwei drawable-Verzeichnisse hinzu – drawable und drawable-v21

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

Privacy policy