Android——SVG图片转成安卓能用的vector矢量图
背景
矢量图能不受显示范围大小的限制且不失真,不需要放多套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矢量图相关推荐
- 怎么把图片弄成logo_怎么把logo变成矢量图
1.怎么将ps里的图标转化为矢量图 1.打开Photoshop软件,将需做矢量图的logo添加进来,并复制图层,记得我当初学Photoshop的时候老师就经常教导我们:要养成复制图层的习惯: 2.观察 ...
- 【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )
文章目录 一.SVG 矢量图简介 二.Android 中生成 Vector 矢量图资源 三.参考资料 一.SVG 矢量图简介 Android SVG 参考文档 : https://developer. ...
- android图片分割点击,Android中图片切割成多个图片的实现方法
系统手机总是有很多不是很完美的时候,比如逐帧播放图片的时候产生的效果,今天爱站技术频道小编为大家整理了Android中图片切割成多个图片的实现方法,大家一起来了解一下吧! 以下是封装好的两个类,可以实 ...
- android svg图片使用
android svg图片使用 1.引入 2.布局xml中使用 <ImageViewandroid:id="@+id/imageView"android:layout_wid ...
- Android Vector(矢量图)介绍
最近在做新项目的开发,很多地方要用到小图标,如状态栏图标,设置选项图标等,现在大多使用Vector图,因为Vector图片不会出现失真即模糊的情况,且节省内存,因为Vector只给出了绘制图片的方法, ...
- 快速制作svg格式logo并将其转化为png矢量图
[实用技巧]快速制作svg格式logo并将其转化为png矢量图 ps 写于2019年 准备材料 操作流程 在logojoy网站内根据提示创建出自己想要的logo. 在最后的生成的logo界面右键检查你 ...
- Android SVG图片解析Demo
SVG SVG是一种图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Language),由Wo ...
- android heic图片,如何在安卓上查看HEIC图片的内容?
原标题:如何在安卓上查看HEIC图片的内容? 一般我们手机拍摄的照片格式是JPG,在任何软件上都可以查看,但是自iOS11更新以后,苹果手机默认的照片格式是HEIC,不论是在常见的电脑上还是安卓手机上 ...
- android 将图片转换成黑白图片
先调用android的系统工具,获取图片生成bitmap文件,再使用android中的二值化技术,将图片转化成黑白图片,主界面代码: package com.example.blackwhite;im ...
最新文章
- (DNS被劫持所导致的)QQ音乐与视频网页打开很慢的解决方法
- 我的C++学习历程(old)
- 健康管理-健康管理特点
- 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
- 讲的真透彻!还有人不知道什么是AndroidX的吗?已拿offer入职
- 电大1253c语言程序设计考试题,电大1253《C语言程序设计》开放大学期末考试试题2020年1月(含答案)...
- python之-- 异常
- Spring.Net---4、IoC/DI注入方式
- 2-16 mysql主从复制
- WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器
- .NET基础拾遗(1)类型语法基础和内存管理基础
- ios首次加载web_iOS预加载Web页面方案
- java实现SPFA算法
- 在chinapub买的书还没有到?
- [譯 + 更新] 參透 Node 中 exports 的 7 種設計模式
- HTML期末作业-我的大学宿舍
- 文件或目录损坏且无法读取的解决办法大集合
- 树莓派使用create_ap创建局域网
- 设计师都在看的全球设计网站,你居然还不知道!
- BasicDBObject 和Query 查询mongodb不同使用方式
热门文章
- 【留言板】在这聊个天勾搭一下神犇之类的
- springboot 项目启动报错 url' attribute is not specified and no embedded datasource could be configured
- 【Leetcode】1628. Design an Expression Tree With Evaluate Function
- 苹果新卫星专利公布,苹果Find My功能知多少
- There is no getter for property named ‘distinct‘ in ‘class tk.mybatis.mapper
- JavaSE基础练习题
- C语言到底有多强大?
- assoc 和 ftype
- OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV
- 【java】微信支付生成签名的过程