Подтвердить что ты не робот

Разница между приложением: srcCompat и android: src в XML-макете Android

Всякий раз, когда я создаю ImageView с иконкой, добавленной с помощью Android Studio Vector Assets, я получаю сообщение об ошибке в строке app:srcCompat="@drawable/ic_play"

Когда я меняю app:srcCompat на android:src, ошибка app:srcCompat но значок выглядит пиксельным.

В чем главное отличие

app:srcCompat="@drawable/ic_play"

а также

android:src="@drawable/ic_play"
4b9b3361

Ответ 1

приложение: srcCompat

- самый надежный метод интеграции векторных чертежей в ваше приложение. Ветвители Vector позволяют заменять несколько активов png на один вектор графический, определенный в XML. Хотя ранее они были ограничены Lollipop и более высокими устройствами

Примечание

В качестве Android Support Library 23.3.0, поддержка векторных чертежей может быть загружена только через app:srcCompat.

вам нужно добавить vectorDrawables.useSupportLibrary = true в ваш build.gradle файл

    // Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

android:src

Устанавливает выталкиваемый как контент этого ImageView. Он будет отображаться в его первоначальный размер. Нет автоматического масштабирования.

Ответ 2

Если вы используете android:src="@drawable/some_vector" без vectorDrawables.useSupportLibrary = true в файле build.gradle, и в вашем приложении есть векторные изображения (векторное изображение), то при сборке apk файла плагин gradle для Android генерирует много * Файлы .png для разных экранов (hdpi, xhdpi...) из каждого вашего вектора (только для API = <19). Результат - больший размер apk.

При использовании app:srcCompat="@drawable/some_vector" с vectorDrawables.useSupportLibrary = true android использует файлы векторного рисования без создания файлов *.png.

Вы можете проверить это с помощью анализатора apk Android Studio. Просто создайте apk с и без vectorDrawables.useSupportLibrary = true.

Я думаю, что это главное отличие.

Ответ 3

Использование:

app:srcCompat="@drawable/backImage"

Атрибут srcCompat фактически определен в библиотеке AppCompat. Важно: вам нужно будет добавить соответствующее пространство имен для этого.

xmlns:app="http://schemas.android.com/apk/res-auto"

Заметка

То, что вы получаете, кажется просто ошибкой, которую можно игнорировать. Я попытался и получил ту же ошибку, но она работает правильно.

Вы можете использовать tools:ignore="MissingPrefix" чтобы временно не видеть эту ошибку.

Надеюсь, это поможет.

Ответ 4

При использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новый атрибут app:srcCompat для ссылки на векторные рисунки на более старых версиях платформы (а также на любых других доступный для рисования android:src).

android.support.v7.appcompat.R.attr.srcCompat:

srcCompat

Устанавливает drawable в качестве содержимого этого ImageView. Позволяет использовать векторную графику при работе на старых версиях платформы.

Может быть ссылкой на другой ресурс в форме "@[+][package:]type/name" или атрибутом темы в форме "?[package:]type/name".


Don't forget adding [TG48] when use [TG49].

Ответ 5

Векторы и анимированные векторы поддерживались только в последних версиях фреймворка. srcCompat может использоваться с библиотекой совместимости, чтобы заставить их работать, но это работает только с определенными представлениями в библиотеке поддержки. Обратите внимание, что приложение: используется вместо android:. Это означает, что это не часть фреймворка, а параметр, определенный вашим приложением.

Ответ 6

app:srcCompat="some_resource" 

означает, что именно AppCompatActivity src входит в библиотеку поддержки, а

android:src="some_resource"

относится к простой деятельности.

Ответ 7

При использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новый атрибут app:srcCompat для ссылки на векторные app:srcCompat (а также на любые другие доступные для рисования, доступные для android:src). И если вы изменяете drawables во время выполнения, вы сможете использовать тот же setImageResource() что и раньше (без изменений).

Использование AppCompat и app:srcCompat - самый надежный метод интеграции векторных рисунков в ваше приложение. Вы обнаружите, что прямая ссылка на векторные app:srcCompat вне app:srcCompat завершится с ошибкой до Lollipop.

Ответ 8

Android 5.0 (уровень API 21) и выше обеспечивает поддержку векторной графики, поэтому для поддержки векторных чертежей в более старых версиях приложение: srcCompat был добавлен