Android使用本地svg及不显示问题解决

简介: Android使用本地svg及不显示问题解决

Android使用本地svg及不显示问题解决

今天UI小姐姐给切图时,里面有部分svg文件。本来想让UI小姐姐全部换成png格式,转念一想那岂不是太low,Android又不是不支持svg。

错误示范

于是就直接将svg图片copy进res/drawable目录下,然后给ImageView的background属性引用,接下来就啪啪打脸了,xml文件直接标红,build之后也报aapt异常,这下就尴尬了。

具体异常如下所示:

于是就赶紧老老实实的去翻官网文档——添加多密度矢量图形

引入本地矢量图正确步骤

第一步,添加Gradle配置

具体来说,是在app/build.gradle文件中添加如下配置:

android {
  defaultConfig {
    //vector to svg, and need
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  implementation 'com.android.support:appcompat-v7:28.0.0'
}

需要注意的是,com.android.support:appcompat-v7的版本需要23.2及以上,不过现在绝大部分项目都已经支持了。

第二步,导入本地svg文件

①在Android Studio的Project窗口中,切换到Android视图,具体如下图:

②然后右键点击res文件夹,选择New > Vector Asset
具体如下图:

③在打开的对话框中,选择本地文件,具体如下图:

需要注意的是,我们的svg源文件名称中不能包含汉字,只支持小写字符、下划线和数字。

④最后点击Next --> Finish即可,就会生成相应的xml文件。

第三步,当做资源文件使用

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/tvi"
    android:layout_marginTop="20dp"
    app:srcCompat="@drawable/ic_icon_delete"
    />

需要注意的是这里要使用app:srcCompat,而不是android:src

注意事项

还有一点需要注意,如果你的Activity不是继承自AppCompatActivity,那么就使用如下代码显示设置svg背景:

imageView.setImageResource(R.drawable.ic_svg_image);

参考

添加多密度矢量图形

Svg not visible in device but visible in android xml

相关文章
|
XML Android开发 数据格式
android中SVG 的使用姿势
android中SVG 的使用姿势
1045 0
android中SVG 的使用姿势
|
Android开发
android SVG 常用语法
android SVG 常用语法
223 0
android SVG 常用语法
|
Android开发
【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
627 0
【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
|
Android开发
【Android 安装包优化】Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )
【Android 安装包优化】Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )
254 0
【Android 安装包优化】Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )
|
Android开发
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(二)
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(二)
166 0
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(二)
|
XML Android开发 图形学
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(一)
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(一)
430 0
【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )(一)
|
Android开发
android studio 导入svg
android studio 导入svg
android studio 导入svg
|
XML Web App开发 Android开发
svg矢量图绘制以及转换为Android可用的VectorDrawable资源
项目需要 要在快速设置面板里显示一个VoWiFi图标(为了能够区分出来图形,我把透明的背景填充为黑色了) 由于普通图片放大后容易失真,这里我们最好用矢量图(SVG(Scalable Vector Graphics))来做图标,而系统状态栏图标多是用vectorDrawable绘制,所以我们的最终目的就是绘制一个上图中样式的Android VectorDrawable xml图标。
2224 0
|
API Android开发
Android L New API之Verctor动画 1 —— SVG Path
导入 1、VectorDrawable是Android L中新增的一个API,让你可以创建基于XML的矢量图,并结合AnimatedVectorDrawable来实现动画效果。 2、Android L新增支持Vector标签,可以使用Path创建动画,同时支持SVG格式。
725 0