每当我使用 Android Studio 的矢量资产创建带有添加图标的 ImageView 时,都会出现错误app:srcCompat="@drawable/ic_play"
当我更改app:srcCompat
withandroid:src
时,错误消失了,但图标看起来像素化了。
之间的主要区别是什么
app:srcCompat="@drawable/ic_play"
和
android:src="@drawable/ic_play"
每当我使用 Android Studio 的矢量资产创建带有添加图标的 ImageView 时,都会出现错误app:srcCompat="@drawable/ic_play"
当我更改app:srcCompat
withandroid:src
时,错误消失了,但图标看起来像素化了。
之间的主要区别是什么
app:srcCompat="@drawable/ic_play"
和
android:src="@drawable/ic_play"
是将矢量绘图集成到您的应用程序中最简单的方法。矢量绘图允许您用 XML 中定义的单个矢量图形替换多个 png 资源。虽然以前仅限于 Lollipop 和更高版本的设备
笔记
从Android 支持库 23.3.0 开始,支持矢量可绘制对象只能通过app:srcCompat
.
您需要将vectorDrawables.useSupportLibrary = true添加到您的build.gradle
文件中
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
将可绘制对象设置为此 ImageView 的内容。它将以其原始大小显示。没有自动缩放。
如果您在 build.gradle 文件中使用android:src="@drawable/some_vector"
withoutvectorDrawables.useSupportLibrary = true
并且您的应用程序有矢量图像(可绘制矢量),那么在构建apk文件时,Android gradle 插件会为不同的屏幕(hdpi、xhdpi ...)生成大量 *.png 文件您的每个矢量可绘制对象(仅适用于 API =< 19)。结果 - 更大的apk大小。
app:srcCompat="@drawable/some_vector"
与android 一起使用时vectorDrawables.useSupportLibrary = true
使用矢量可绘制文件而不生成*.png
文件。
您可以使用 Android Studio apk 分析器工具进行检查。只需构建带有和不带有vectorDrawables.useSupportLibrary = true
.
我认为这是主要的区别。
采用:
app:srcCompat="@drawable/backImage"
srcCompat 属性实际上是在 AppCompat 库中定义的。重要提示:您需要为此添加适当的命名空间。
xmlns:app="http://schemas.android.com/apk/res-auto"
笔记
你得到的似乎只是一个可以忽略的 lint 错误。我已经尝试并得到了同样的错误,但它工作正常。
您可以使用tools:ignore="MissingPrefix"
暂时避免看到此错误。
我希望这有帮助。
当使用AppCompat
with ImageView
(或子类,如ImageButton
and FloatingActionButton
)时,您将能够使用新app:srcCompat
属性来引用旧版本平台上的矢量可绘制对象(以及任何其他可用于 的可绘制对象android:src
)。
android.support.v7.appcompat.R.attr.srcCompat:
srcCompat
将可绘制对象设置为此 ImageView 的内容。在旧版本的平台上运行时允许使用矢量可绘制对象。
可能是对表单中另一个资源的引用,也可能是表单中
"@[+][package:]type/name"
的主题属性"?[package:]type/name"
。
xmlns:app="http://schemas.android.com/apk/res-auto"
使用时不要忘记添加app:srcCompat
。
app:srcCompat="some_resource"
是指它是支持库中的 AppCompatActivity src,而
android:src="some_resource"
指简单的活动。
仅在框架的最新版本中支持矢量和动画矢量。srcCompat 可以与兼容性库一起使用以使它们工作,但这仅适用于支持库中的某些视图。请注意,使用 app: 而不是 android:。这意味着它不是框架的一部分,而是由您的应用程序定义的参数。
当使用AppCompat
with ImageView
(或子类,如ImageButton
and FloatingActionButton
)时,您将能够使用新app:srcCompat
属性来引用矢量可绘制对象(以及任何其他可用于 的可绘制对象android:src
)。如果您在运行时更改可绘制对象,您将能够使用与setImageResource()
以前相同的方法(那里没有更改)。
使用AppCompat
andapp:srcCompat
是将矢量绘图集成到您的应用程序中最简单的方法。您会发现在Lollipopapp:srcCompat
之前直接引用外部的矢量可绘制对象将失败。
Android 5.0(API 级别 21)及更高版本提供矢量可绘制支持,因此为了在旧版本中支持矢量可绘制应用:添加了 app:srcCompat