5.0以上支持VectorDrawable了,可以创建vector的xml资源文件。vector其实就使用来绘制矢量图形的。

看一个例子:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp"android:width="64dp"android:viewportHeight="100"android:viewportWidth="100"><pathandroid:fillColor="#000000"android:pathData="M25,0 l 50,50 -50,50Z"/></vector>

首先vector 标签是一个drawable对象,所以是放在res/drawable目录的。

vector 标签下有android:width和android:height属性,这两个属性是必填的,定义矢量图形的绝对大小,虽然说是矢量图形随意缩放,但是不能说这里不定义宽高直接到要设置到的目标控件上定义控件的宽高,这样是不允许的,一定要设置这个绝对宽高,要不然会报错。

然后还有个android:viewportHeight和android:viewportWidth属性,这个是画布宽高,也是必填的,定义Path路径的时候就必须在这个画布大小里去绘制,超出画布就显示不出来了。

path标签android:fillColor属性定义绘制颜色,android:pathData定义绘制路径。

M25,0 l 50,50 -50,50Z这个路径表示:在100*100的画布内,先把绘制点移动到绝对坐标(25,0)这个点,然后画直线到(50,50)这个点,l指令是相对坐标,大写的L表示绝对坐标,那么l 50,50就是在原点(25,0)的x轴往前移50,往下移50,绝对坐标就是(75,50),也就是三角形的右边那个点。然后从(50,50)这个点绘制到三角形最下面那个点(-50,50),这也是相对右边那个点相对坐标,也就是把(75,50)这个绝对坐标当作是原点(0,0),参作这个原点往后移动50再往下移动50,在整个画布中的绝对坐标就是(25,100)

再看一种画法:

M300,70 l 0,-70 70,70 0,0 -70,70z

这个官方的画法,先定点,然后把定点固定在原点垂直上方,然后往右下移确定三角形右边的定点,最后把点水平向后移动70往下移动70,回到原点的水平轴在y轴上移动140.

是先画三角的上半部分再画下半部分。

同样是画上面这个三角形:

先移动到随便一个点:M300,70

然后把线段一端定在三角形下边那个点l 0,70(也就是垂直往下移动了70)

后面再补上三角形右边的点l 0,70 70,70(下面的点x轴和y轴都移动70,就到三角形右边的点)

M300,70 l 0,70 70,-70  这样就把三角形下半段画好了

再补上上半段M300,70 l 0,70 70,-70 -70,-70

如果要把这个三角形旋转角度怎么办?

就要在path外层顶一个group节点,利用这个group对它进行旋转

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp"android:width="64dp"android:viewportHeight="600"android:viewportWidth="600"><group android:pivotX="300.0"android:pivotY="300.0"android:rotation="45.0"><pathandroid:name="v"android:fillColor="#000000"android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70"/></group>
</vector>

转载于:https://www.cnblogs.com/bvin/p/4317852.html

Androidの矢量图形之VectorDrawable研究相关推荐

  1. Android开发之将Android SVG 转 VectorDrawable矢量图的方法

    Android SVG to VectorDrawable介绍两种方法如下 方法一 使用在线的三方网站即可我推荐两个: Android SVG to VectorDrawable Android SV ...

  2. Android怎么保证广播安全,Android 广播机制安全性研究.PDF

    Android 广播机制安全性研究 电信 科 学 2016 年第 10 期 专题 :基 于 Android 系统 的终端安全 Android 广播机制安全性研究 卿 斯汉 1, 2, 3 (1. 中国 ...

  3. Android矢量图形-Vector

    1 概述 1.1 编写目的 学习Android矢量图形相关的知识点,记录下来,方便后续学习及查询. 2 Vector图形 2.1 图片生成Vector图形 右键->New->Vector ...

  4. 【转】android hal 层GPS 研究总结——关于GPS GGA/GSV/RMC 数据的解析

    [转]android hal 层GPS 研究总结 2011-09-22 快跑的未必能赢,力战的未必获胜,聪明的未必得粮食,明哲的未必得资财,灵活的未必得喜悦.所临到世人的,是在乎当时的机会. 人生一世 ...

  5. Android SVG 和 VectorDrawable 的基本知识

    Android 5.0系统中引入了 VectorDrawable 来支持矢量图(SVG),同时还引入了 AnimatedVectorDrawable 来支持矢量图动画 什么是 SVG ? SVG是指可 ...

  6. android+矢量图+插件,如何玩转Android矢量图VectorDrawable

    从5.0(api等级21)开始,android开始支持矢量图了.关于什么是矢量图以及矢量图有什么优缺点不在本文的涉及范围之内,具体可以参考矢量图百科.不过这里要提一下它的优点: 保存最少的信息,文件大 ...

  7. Android之记录并研究Volley框架中知识点

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50916258 本文出自:[顾林海的博客] ##前言 在上一遍<对 ...

  8. Android WiFi热点完全研究(自定义创建、跳转系统界面设置、读取配置、切换,Android6.0适配)...

    前言: WiFi热点设置页面的安全性选项在Android 4.x上有"无"."WPA PSK"."WPA2 PSK"三个选项,在Androi ...

  9. Android性能优化案例研究(上)

    为什么80%的码农都做不了架构师?>>>    英文原文:Android Performance Case Study  编译:ImportNew - 孙立 译 者前言: 这是Goo ...

  10. Android防火墙原型系统设计,Android系统网络安全性研究及防火墙设计

    摘要: 随着科学的发展,Android系统智能手机给人们的生活带来了极大的方便,但Android系统的开放性让很多恶意的攻击者有机可乘.攻击者利用系统漏洞,从远端服务器发送命令,对智能手机进行攻击,从 ...

最新文章

  1. HttpWebRequest采集读取网站挂载Cookie的通用方法
  2. 阿里云使用笔记-MySQL远程连接-centos7
  3. 【已解决】运行Eclipse出错:Failed toload the JNI shared library
  4. linux mv 递归拷贝,奇技淫巧 - 给Linux中的cp和mv命令中添加进度条的高级拷贝
  5. Enterprise Blocks
  6. 报告怎么看_体检报告怎么看? 超实用的阅读指南来了!
  7. ceph升级到10.2.3 版本启动服务报错:Unknown lvalue 'TasksMax' in section 'Service'
  8. MATLAB 添加自有的工具包
  9. spring aop实例讲解_【好好面试】手把手调试,教你分析Spring-Aop
  10. Grunt构建工具能做哪些事?
  11. 《System语言详解》——6. 语句种类
  12. paip.解决中文url路径的问题图片文件不能显示
  13. 【游戏】基于matlab GUI可调电扇设计【含Matlab源码 1110期】
  14. win8需要计算机管理员权限才能删除,win8系统使用管理员权限无法删除部分文件怎么办...
  15. Fedora 10 下编译安装 Libfetion 玩飞信
  16. 隐藏在浏览器背后的“黑手”
  17. LeetCode知识点总结 - 1179
  18. 我们为什么要学习保险知识
  19. 正则表达式在线测试网站推荐
  20. 微信公众号文章爬取方法整理

热门文章

  1. 汝跟被升职者之间,不存在竞争关系
  2. 错误解决办法:zipimport.ZipImportError: can't decompress data; zlib not available
  3. CSDN博客排名不更新,谈谈重构的做法
  4. mysql查看autocommit_我所理解的MySQL(四)事务、隔离级别及MVCC
  5. 如何用python读取表_Python读取MySQL表数据的方法介绍
  6. php soap 用法,php soap用法
  7. js 数组 常用方法
  8. 学习spring第一天
  9. 结合 TreeMap 源码分析红黑树在 java 中的实现
  10. 在eclipse-oxygen-sts中,关于快捷键[CTRL + SHIFT + O]失效的问题