美文网首页
Android使用本地svg及不显示问题解决

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

作者: tinyvampirepudg | 来源:发表于2019-07-25 14:54 被阅读0次

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

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

错误示范

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

具体异常如下所示:

image image

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

引入本地矢量图正确步骤

第一步,添加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视图,具体如下图:

image

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

image image

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

image

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

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

image image

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

<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

相关文章

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

    Android使用本地svg及不显示问题解决 今天UI小姐姐给切图时,里面有部分svg文件。本来想让UI小姐姐全部...

  • 使用Glide v4加载SVG资源

    Android使用矢量图(SVG, VectorDrawable)实践篇 Android SVG矢量动画机制 先放...

  • Android显示SVG

    Glide中有显示svg的例子,链接如下 sample/svg 默认svg显示出来是比较小的,我们需要修改SvgD...

  • 封装svg组件

    svg图标的使用基于这次项目的图标使用本地的svg图片。普通的使用方式 避免每次写这三行代码,封装一个svg组件 ...

  • Android中显示PDF的问题解决

    Android中显示PDF的问题解决(安卓端使用pdf.js CDN模式) https://blog.csdn.n...

  • Android自定义动画三-SVG动画

    Android自定义动画三-SVG动画 本篇文章主要是对SVG的一个介绍和使用,以及Android中对SVG的一个...

  • Android 使用自定义SVG

    参考 1、Android SVG支持2、svg在android上的应用3、Android SVG4、Android...

  • SVGtest

    SVG,即Scalable Vector Graphics 矢量图,首先你要有SVG矢量图,然后使用Android...

  • vue使用本地svg

    在上一章完成登录页面基本结构之后,svg虽然也写进去了,可怎么都不显示,这章就是解决这个问题。 在vue项目中使用...

  • Android如何使用SVG

    layout: post title: 'Android如何使用SVG' subtitle: '转载请注明出处' ...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/yjshrctx.html