Android:в чем разница между app:srcCompat=" " и android: src=" "?



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



и когда я изменить app:srcCompat="" С android:src="" ошибка исчезла, но значок выглядит неровной.



в чем основная разница между



app:srcCompat="@drawable/ic_play"


и



android:src="@drawable/ic_play"
1096   8  

8 ответов:

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

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

Примечание

по состоянию на Библиотека Поддержки Android 23.3.0, поддержка векторных чертежей может быть загружен только через app:srcCompat .

вы должны добавить vectorDrawables.useSupportLibrary = true на build.gradle file

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

android: src

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

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

app:srcCompat="@drawable/backImage"

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

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

Примечание

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

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

Я надеюсь, что это помогает.

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

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

android.поддержка.v7.совместимости приложений.Р. привлекательными.srcCompat:

srcCompat

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

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


не забудьте вставить xmlns:app="http://schemas.android.com/apk/res-auto" при использовании app:srcCompat.

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

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

вы можете проверить это с Android Studio apk analyzer tool. Просто построить apk с и без vectorDrawables.useSupportLibrary = true.

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

app:srcCompat="some_resource" 

это ссылка на то, что это AppCompatActivity src, который поставляется в библиотеке поддержки в то время как

android:src="some_resource"

относится к простым действием.

при использовании совместимости приложений с книги (или подклассы, такие как ImageButton С и FloatingActionButton), вы сможете использовать новое приложение:srcCompat атрибута для ссылки векторные рисунки (как впрочем и любой другой, доступный на Android:ГРЦ):и если ты меняешь рисунки во время выполнения, вы сможете использовать те же setImageResource() метод, как и раньше - никаких изменений нет. Использование AppCompat и app: srcCompat является наиболее надежным методом интеграции векторных чертежей в ваше приложение. Вы найти непосредственно ссылки на векторные чертежи за пределами приложения: srcCompat не удастся до Lollipop.

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

Comments

    Ничего не найдено.