Android 布局 XML 中 app:srcCompat 和 android:src 的区别

新手上路,请多包涵

每当我使用 Android Studio 的矢量资产创建带有添加图标的 ImageView 时,都会在 app:srcCompat="@drawable/ic_play" 行出现错误

当我将 app:srcCompat 更改为 android:src 时,错误消失了,但图标看起来像素化了。

之间的主要区别是什么

app:srcCompat="@drawable/ic_play"

android:src="@drawable/ic_play"

原文由 Zayid Mohammed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

应用程序:srcCompat

是将 矢量绘图 集成到您的应用程序中最简单的方法。矢量绘图允许您用 XML 中定义的单个矢量图形替换多个 png 资源。虽然以前仅限于 Lollipop 和更高版本的设备

笔记

Android 支持库 23.3.0 开始支持矢量绘图 只能通过 app:srcCompat 加载。

您需要将 vectorDrawables.useSupportLibrary = true 添加到您的 build.gradle 文件中

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

安卓:源代码

将可绘制对象设置为此 ImageView 的内容。它将以其原始大小显示。没有自动缩放。

原文由 IntelliJ Amiya 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您在 build.gradle 文件中使用 android:src="@drawable/some_vector" 没有 vectorDrawables.useSupportLibrary = true 并且您的应用程序有矢量图像(可绘制矢量),那么在构建 apk 文件时,Android gradle 插件会生成很多 *.来自每个矢量可绘制对象的不同屏幕(hdpi、xhdpi …)的 png 文件(仅适用于 API =< 19)。结果 - 更大的 apk 大小。

当使用 app:srcCompat="@drawable/some_vector"vectorDrawables.useSupportLibrary = true android 使用矢量可绘制文件而不生成 *.png 文件。

您可以使用 Android Studio apk 分析器工具进行检查。只需构建带有和不带有 vectorDrawables.useSupportLibrary = true 的 apk。

我认为这是主要的区别。

原文由 bitvale 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏