Chaque fois que je crée un ImageView avec une icône ajoutée à l'aide de Android Les ressources vectorielles de Studio, je reçois une erreur à la ligne app:srcCompat="@drawable/ic_play"
Lorsque je modifie le app:srcCompat
avec Android:src
, l'erreur disparaît mais l'icône semble pixélisée.
Quelle est la principale différence entre
app:srcCompat="@drawable/ic_play"
et
Android:src="@drawable/ic_play"
est la méthode la plus infaillible pour intégrer dessin vectoriel dans votre app.Vector drawables vous permet de remplacer plusieurs ressources png par un seul graphique vectoriel, défini en XML. Alors que précédemment limité à Lollipop et les appareils supérieurs
Remarque
À partir de Bibliothèque de support Android 23.3., Les vecteurs support vectoriels peuvent uniquement être chargés via app:srcCompat
.
vous devez ajouter vectorDrawables.useSupportLibrary = true à votre fichier _build.gradle
_
_ // Gradle Plugin 2.0+
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
_
Définit un dessin comme contenu de cette ImageView.Il sera affiché dans sa taille originale. Pas de mise à l'échelle automatique.
Si vous utilisez Android:src="@drawable/some_vector"
sans vectorDrawables.useSupportLibrary = true
dans le fichier build.gradle et si votre application contient des images vectorielles (dessin vectoriel), alors lors de la construction du fichier apk AndroidLe plugin _ gradle génère beaucoup de fichiers * .png pour différents écrans (hdpi, xhdpi ...) à partir de chacun de vos vecteurs dessinables (uniquement pour API = <19). Le résultat - une plus grande taille de apk.
Lorsque vous utilisez app:srcCompat="@drawable/some_vector"
avec vectorDrawables.useSupportLibrary = true
Android utilise des fichiers pouvant être dessinés par vecteur sans générer de fichiers *.png
.
Vous pouvez le vérifier avec Android Studio apk analyzer tool. Il suffit de construire apk avec et sans vectorDrawables.useSupportLibrary = true
.
Je pense que c'est la différence principale.
tilisez:
app:srcCompat="@drawable/backImage"
L'attribut srcCompat est en réalité défini dans la bibliothèque AppCompat. Important: vous devrez ajouter l'espace de nom approprié pour cela.
xmlns:app="http://schemas.Android.com/apk/res-auto"
Note
Ce que vous obtenez semble être simplement une erreur de peluche que vous pouvez ignorer. J'ai essayé et obtenu la même erreur, mais cela fonctionne correctement.
Vous pouvez utiliser tools:ignore="MissingPrefix"
pour éviter de voir cette erreur, temporairement.
J'espère que ça aide.
Lorsque vous utilisez AppCompat
avec ImageView
(ou des sous-classes telles que ImageButton
et FloatingActionButton
), , vous pourrez utiliser le nouveau app:srcCompat
attribut de référence au vecteur pouvant être dessiné sur les anciennes versions de la plate-forme (ainsi que tout autre dessin disponible pour Android:src
) .
Android.support.v7.appcompat.R.attr.srcCompat :
srcCompat
Définit un dessin comme contenu de cette image. Permet l'utilisation de vecteurs dessinables lors de l'exécution sur des versions antérieures de la plate-forme.
Peut être une référence à une autre ressource, sous la forme
"@[+][package:]type/name"
ou un attribut de thème sous la forme"?[package:]type/name"
.
N'oubliez pas d'ajouter xmlns:app="http://schemas.Android.com/apk/res-auto"
lorsque vous utilisez app:srcCompat
.
Les vecteurs et les vecteurs animés n'étaient pris en charge que dans les versions récentes du framework. Vous pouvez utiliser srcCompat avec la bibliothèque de compatibilité pour les faire fonctionner, mais cela ne fonctionne qu'avec certaines vues de la bibliothèque de support. Notez que app: est utilisé à la place d'Android :. Cela signifie que cela ne fait pas partie du cadre, mais d'un paramètre défini par votre application.
app:srcCompat="some_resource"
est se référer que c’est AppCompatActivity src qui vient dans la bibliothèque de support en
Android:src="some_resource"
fait référence à une activité simple.
Lorsque vous utilisez AppCompat
avec ImageView
(ou des sous-classes telles que ImageButton
et FloatingActionButton
), vous pourrez utiliser le nouvel attribut app:srcCompat
pour référencer les vecteurs dessinés. (ainsi que tout autre dessin disponible pour Android:src
). Et si vous modifiez les dessins au moment de l'exécution, vous pourrez utiliser la même méthode setImageResource()
qu'auparavant (aucune modification ne sera apportée ici).
Utiliser AppCompat
et app:srcCompat
est la méthode la plus infaillible pour intégrer des vecteurs dessinables à des vecteurs dans votre application. Vous constaterez que le référencement direct des vecteurs dessinés en dehors de app:srcCompat
échouera avant Lollipop.
Android 5.0 (API de niveau 21) et supérieur fournit un support pour dessiner des vecteurs donc, afin de prendre en charge des vecteurs pouvant être dessiner dans des versions plus anciennes de l'application: srcCompat a été ajouté