背景
矢量图能不受显示范围大小的限制且不失真,不需要放多套PNG图片来做适配,能随意自己更改矢量图的大小而不再需要去求同事给新切图。
而我目前所在的公司出图放在蓝湖上,能选择下载PNG或SVG格式的图片。
项目中有个类似于电影院选座一样的控件,每个小框内有个图片,能放大,放大后普通的小PNG图片会失真,很丑。

操作
1、下载得到SVG图片。
2、Android Studio(开发工具)中在drawable目录下 右键 -> New -> Vector Asset。
3、按照如下图的操作选择,Path中选择svg图片,Name会自动起一个名字但是我们可以手动更改成我们想要的名字。然后完成生成即可。

4、查看生成的xml文件的图片代码如下。这里的宽高我们可以直接更改数值,值比较小,而控件比较大,显示的时候也不会失真。但是如果要直接把这个图片转成Bitmap,Bitmap的大小宽高则是受这个Width与Height影响。

5、常见的转成Bitmap的方式是

BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_demo)

如果是这种Vector这种矢量图,可以使用如下方法来获取:

private static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {Drawable drawable = ContextCompat.getDrawable(context, drawableId);if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {drawable = (DrawableCompat.wrap(drawable)).mutate();}Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());drawable.draw(canvas);return bitmap;
}

Asset Type如何选择Clip Art,则是选择系统自带的很多常用图标来进行自定义编辑处理。

viewportWidth、viewportHeight,尽量不要去更改。感兴趣的可以去修改看看效果。

结论
使用矢量图后,就算显示区域放大十倍按理说图片是不会失真的,但是在我的这个实际验证发现,还是会有点毛边和失真。原因是Vector中指定了图片的宽高的大小,转化成Bitmap后就相当于定下了宽高,控件中放大操作是使用的canvas.drawBitmap方法,所以在这里矢量图的作用就相当于没有了。
难道花了这么久做了无用功吗?当然不会,这个Vector矢量图,我们可以直接在xml中更改宽高属性,设置值大一点则初始获取的bitmap也会大一点,而控件的方法并不是无限放大的,所以这个值设置的合适的情况下,无论如何缩放图片都是很清晰的不会失真的。如果是PNG的图片的话,则需要找切图的同事帮忙切一个尺寸更大的新切图,图片也会比较大导致打包的apk变大。

目前还不知道如何批量转化,每个图片这样操作一下都比较繁琐,如果想大批量转化的话很费时很无聊。

20190425更新

这种矢量图下不能有中文,如果之前图片上有中文的话转化后中文被去除了。

Android——SVG图片转成安卓能用的vector矢量图相关推荐

  1. 怎么把图片弄成logo_怎么把logo变成矢量图

    1.怎么将ps里的图标转化为矢量图 1.打开Photoshop软件,将需做矢量图的logo添加进来,并复制图层,记得我当初学Photoshop的时候老师就经常教导我们:要养成复制图层的习惯: 2.观察 ...

  2. 【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )

    文章目录 一.SVG 矢量图简介 二.Android 中生成 Vector 矢量图资源 三.参考资料 一.SVG 矢量图简介 Android SVG 参考文档 : https://developer. ...

  3. android图片分割点击,Android中图片切割成多个图片的实现方法

    系统手机总是有很多不是很完美的时候,比如逐帧播放图片的时候产生的效果,今天爱站技术频道小编为大家整理了Android中图片切割成多个图片的实现方法,大家一起来了解一下吧! 以下是封装好的两个类,可以实 ...

  4. android svg图片使用

    android svg图片使用 1.引入 2.布局xml中使用 <ImageViewandroid:id="@+id/imageView"android:layout_wid ...

  5. Android Vector(矢量图)介绍

    最近在做新项目的开发,很多地方要用到小图标,如状态栏图标,设置选项图标等,现在大多使用Vector图,因为Vector图片不会出现失真即模糊的情况,且节省内存,因为Vector只给出了绘制图片的方法, ...

  6. 快速制作svg格式logo并将其转化为png矢量图

    [实用技巧]快速制作svg格式logo并将其转化为png矢量图 ps 写于2019年 准备材料 操作流程 在logojoy网站内根据提示创建出自己想要的logo. 在最后的生成的logo界面右键检查你 ...

  7. Android SVG图片解析Demo

    SVG SVG是一种图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Language),由Wo ...

  8. android heic图片,如何在安卓上查看HEIC图片的内容?

    原标题:如何在安卓上查看HEIC图片的内容? 一般我们手机拍摄的照片格式是JPG,在任何软件上都可以查看,但是自iOS11更新以后,苹果手机默认的照片格式是HEIC,不论是在常见的电脑上还是安卓手机上 ...

  9. android 将图片转换成黑白图片

    先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite;im ...

最新文章

  1. (DNS被劫持所导致的)QQ音乐与视频网页打开很慢的解决方法
  2. 我的C++学习历程(old)
  3. 健康管理-健康管理特点
  4. 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
  5. 讲的真透彻!还有人不知道什么是AndroidX的吗?已拿offer入职
  6. 电大1253c语言程序设计考试题,电大1253《C语言程序设计》开放大学期末考试试题2020年1月(含答案)...
  7. python之-- 异常
  8. Spring.Net---4、IoC/DI注入方式
  9. 2-16 mysql主从复制
  10. WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
  11. .NET基础拾遗(1)类型语法基础和内存管理基础
  12. ios首次加载web_iOS预加载Web页面方案
  13. java实现SPFA算法
  14. 在chinapub买的书还没有到?
  15. [譯 + 更新] 參透 Node 中 exports 的 7 種設計模式
  16. HTML期末作业-我的大学宿舍
  17. 文件或目录损坏且无法读取的解决办法大集合
  18. 树莓派使用create_ap创建局域网
  19. 设计师都在看的全球设计网站,你居然还不知道!
  20. BasicDBObject 和Query 查询mongodb不同使用方式

热门文章

  1. 【留言板】在这聊个天勾搭一下神犇之类的
  2. springboot 项目启动报错 url' attribute is not specified and no embedded datasource could be configured
  3. 【Leetcode】1628. Design an Expression Tree With Evaluate Function
  4. 苹果新卫星专利公布,苹果Find My功能知多少
  5. There is no getter for property named ‘distinct‘ in ‘class tk.mybatis.mapper
  6. JavaSE基础练习题
  7. C语言到底有多强大?
  8. assoc 和 ftype
  9. OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV
  10. 【java】微信支付生成签名的过程