每当我创建一个使用Android Studio的Vector Assets添加了带有图标的ImageView时,我都会收到一条错误消息 app:srcCompat="@drawable/ic_play"
当我更改app:srcCompat
with时android:src
,错误消失了,但是图标看起来像是像素化的。
之间的主要区别是什么
app:srcCompat="@drawable/ic_play"
和
android:src="@drawable/ic_play"
每当我创建一个使用Android Studio的Vector Assets添加了带有图标的ImageView时,我都会收到一条错误消息 app:srcCompat="@drawable/ic_play"
当我更改app:srcCompat
with时android:src
,错误消失了,但是图标看起来像是像素化的。
之间的主要区别是什么
app:srcCompat="@drawable/ic_play"
和
android:src="@drawable/ic_play"
Answers:
是将矢量可绘制对象集成到应用程序中的最简单的方法。矢量可绘制对象允许您用XML中定义的单个矢量图形替换多个png资产。虽然以前仅限于棒棒糖和更高版本的设备
注意
从Android支持库23.3.0开始,支持向量可绘制对象只能通过加载app:srcCompat
。
你需要添加vectorDrawables.useSupportLibrary =真到你的build.gradle
文件
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
设置一个可绘制对象作为此ImageView的内容,它将以其原始大小显示。没有自动缩放。
build.gradle
,但仍然无法正常工作,有什么想法吗?
如果使用的是android:src="@drawable/some_vector"
没有vectorDrawables.useSupportLibrary = true
在文件的build.gradle和您的应用程序具有矢量图像(矢量绘制),然后在构建APK文件的Android gradle这个插件生成了很多来自不同屏幕(华电国际,xhdpi ...)* .png文件每个矢量可绘制对象(仅适用于API = <19)。结果是-做大尺寸的apk。
app:srcCompat="@drawable/some_vector"
与vectorDrawables.useSupportLibrary = true
android一起使用时,使用矢量可绘制文件而不生成*.png
文件。
您可以使用Android Studio APK分析工具进行检查。只需使用和不使用即可构建apk vectorDrawables.useSupportLibrary = true
。
我认为这是主要区别。
当使用AppCompat
具有ImageView
(或子类,如ImageButton
和FloatingActionButton
),你就可以使用新的app:srcCompat
属性,以参考矢量绘图资源在旧版本的平台(以及任何其他绘制可用android:src
)。
android.support.v7.appcompat.R.attr.srcCompat:
srcCompat
设置一个drawable作为此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"
指简单活动。
当使用AppCompat
具有ImageView
(或子类,如ImageButton
和FloatingActionButton
),你就可以使用新的app:srcCompat
属性,以参考矢量绘图资源(以及任何其他绘制可用android:src
)。而且,如果您要在运行时更改可绘制对象,则可以使用与setImageResource()
以前相同的方法(此处没有任何更改)。
使用AppCompat
和app:srcCompat
是将矢量可绘制对象集成到您的应用程序中最简单的方法。您会发现直接引用矢量可绘制对象在Lollipopapp:srcCompat
之前将失败。