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