Si vous utilisez l'assistant Vector Asset dans Android Studio 1.5.0, tout fichier XML dessinable vectoriel que vous importez à l'aide de cet assistant entre dans res/drawable/
.
Cependant, le build/
répertoire et l'APK résultant montrent que ces fichiers XML sont déplacés dans un res/drawable-anydpi-v21/
répertoire de ressources. La -v21
partie a du sens, car elle VectorDrawable
n'est prise en charge que sur l'API Level 21+. Cependant, -anydpi
semble être non documenté. Je me serais attendu -nodpi
, à la fois pour la destination d'importation d'origine et pour l'endroit où le système de construction choisit de le déplacer.
Quelqu'un a-t-il vu des déclarations officielles sur quels -anydpi
moyens et avec quoi sa relation est-elle -nodpi
? Je recherche des effets pratiques, pas seulement ce que suggèrent certains commentaires de code.
la source
Réponses:
hochement de tête
Par exemple:
Le point apparaîtra petit sur xxhdpi, grand sur ldpi.
Cependant, le résolveur de ressources correspondra à un qualificatif spécifique s'il existe.
Par exemple
Sur un périphérique hdpi Lollipop (API 21), le bitmap est utilisé.
Sur un périphérique xhdpi Lollipop (API 21), le vecteur est utilisé.
anydpi
Par exemple
Sur un périphérique hdpi Lollipop (API 21), le vecteur est utilisé.
Sur un périphérique xhdpi Lollipop (API 21), le vecteur est utilisé.
Référence
Remarque : anydpi a été ajouté dans le changement Ic3288d0236fe0bff20bb1599aba2582c25b0db32 .
la source
drawable
. Le comportement du SDK peut avoir changé. Voir VectorDrawable: Android charge des fichiers PNG xhdpi au lieu de la ressource vectorielledrawable
répertoire de ressources, tout comme les deux répertoires que j'ai cités dans ma prime sontdrawable
des répertoires de ressources.-xxhdpi
appareil. J'aires/drawable-mdpi/nodpi_and_m.png
etres/drawable-nodpi/nodpi_and_m.xml
. Sur un appareil Nexus 5,-xxhdpi
la ressource utilisée estres/drawable-nodpi/nodpi_and_m.xml
. Selon votre algorithme, et mes attentes,res/drawable-mdpi/nodpi_and_m.png
doit être utilisé. Ce n'est pas ce qui se passe.drawable-anydpi-v21
. Si vous disposez de la bibliothèque support-vector-drawable, vous pouvez les placer dansdrawable-anydpi
ou simplementdrawable
.Le code source contient les commentaires suivants (ligne 639):
J'espère que cela dissipe la confusion.
la source
-nodpi
répertoires sont très certainement mis à l'échelle en fonction de leur taille, selon les règles en place pour l'utilisation du dessinable.nodpi
: Ressources pour toutes les densités. Ce sont des ressources indépendantes de la densité. Le système ne met pas à l'échelle les ressources étiquetées avec ce qualificatif, quelle que soit la densité de l'écran actuel.anydpi
: Ce qualificatif correspond à toutes les densités d'écran et a la priorité sur les autres qualificatifs. Ceci est utile pour les dessins vectoriels. Ajouté au niveau d'API 21.la source
J'utilise drawable-nodpi pour tout, y compris beaucoup de grands graphiques pour mon jeu. Une conséquence non documentée de la mise à l'échelle de vos graphiques est qu'elle augmente l'utilisation de la mémoire de manière exponentielle. Donc, si vous avez un graphique de 1 Mo en dessin, il sera mis à l'échelle à 4 Mo, 16 Mo ou 64 Mo en fonction de la résolution de la machine utilisateur. Et les résolutions des appareils ne cessent d'augmenter. Cette mise à l'échelle n'augmente pas réellement la netteté du graphique, bien sûr. Les actions de dessin peuvent de toute façon déterminer la taille de chaque graphique par rapport à la taille de l'écran, pas besoin de gonfler l'application avec plusieurs dossiers de dessin.
la source