标签介绍:

, , 项目中还是用到了一些动画的标签,这里就不做展示了

path
android:name 定义该 path 的名字,这样在其他地方可以通过名字来引用这个路径
android:pathData 和 SVG 中 d 元素一样的路径信息。
android:fillColor 定义填充路径的颜色,如果没有定义则不填充路径
android:strokeColor 定义如何绘制路径边框,如果没有定义则不显示边框
android:strokeWidth 定义路径边框的粗细尺寸
android:strokeAlpha 定义路径边框的透明度
android:fillAlpha 定义填充路径颜色的透明度
android:trimPathStart 从路径起始位置截断路径的比率,取值范围从 0 到1
android:trimPathEnd 从路径结束位置截断路径的比率,取值范围从 0 到1
android:trimPathOffset 设置路径截取的范围,取值范围从 0 到1
android:strokeLineCap 设置路径线帽的形状,取值为 butt, round, square.
android:strokeLineJoin 设置路径交界处的连接方式,取值为 miter,round,bevel.
android:strokeMiterLimit 设置斜角的上限文

vector:定义这个矢量图
android:name 定义该drawable的名字
android:width 定义该 drawable 的内部(intrinsic)宽度,支持所有 Android 系统支持的尺寸,通常使用 dp
android:height 定义该 drawable 的内部(intrinsic)高度,支持所有 Android 系统支持的尺寸,通常使用 dp
android:viewportWidth 定义矢量图视图的宽度,视图就是矢量图 path 路径数据所绘制的虚拟画布
android:viewportHeight 定义矢量图视图的高度,视图就是矢量图 path 路径数据所绘制的虚拟画布
android:tint 定义该 drawable 的 tint 颜色。默认是没有 tint 颜色的
android:tintMode 定义 tint 颜色的 Porter-Duff blending 模式,默认值为 src_inandroid:autoMirrored 设置当系统为 RTL (right-to-left) 布局的时候,是否自动镜像该图片。
android:alpha 该图片的透明度属性

首先创建一个vectorDrawable
先展示一下效果图



登录界面的vectorDrawable
现在看上去还是没一点鸟用哈,也没什么特点,下一篇博客将给你惊喜,这里就不管它了



注意:这里宽高(width和height的比例及viewportHeight和viewportWidth比例)的比例很重要,这个比例必须和布局文件中宽高比例一直,比如布局文件中的宽是300dp,高是100dp,那么宽高的比例就是3:1,所以在vector中的宽高比例就是3:1

不要怪我啰嗦,因为你如果不对应,导致的直接结果就是显示后的图形是拉伸或是压缩的,然后你可能会想。我改一下就好了,那恭喜你你成功给自己挖了一个大坑,全是计算

                                        
没错我第一次看到vector的时候也是一脸懵逼,这t m是啥呀,全是字母加数字,那就具体来解释一下吧



vectorDrawable支持的指令:

M = moveto(M X,Y) :将画笔移动到指定的坐标位置L = lineto(L X,Y) :画直线到指定的坐标位置H = horizontal lineto(H X):画水平线到指定的X坐标位置V = vertical lineto(V Y):画垂直线到指定的Y坐标位置C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线S = smooth curveto(S X2,Y2,ENDX,ENDY)Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次贝赛曲线T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):画圆弧。分别对应: x轴半径,y轴半径,x轴偏移量,弧度(0代表取小弧度,1代表取大弧度) ,方向(0取逆时针,1为顺时针),目标X坐标,目标y坐标。(当rx=ry时就是一个圆,但是终点坐标要对哈)Z = closepath():关闭路径

注意:这里字母大写和字母小写也是有讲究的,大写代表当前空间的绝对位置,小写代表相对位置,比如M(10,10)指的是移动到当前空间的x=10,y= 10这个位置(绝对位置),m(10,10)则指的是从当前点向右10个单位位置的点,并从当前点向下10个单位位置的点(相对位置)
这里提一下至于数字中间用逗号间隔,还是用空格来隔开都没关系,根据个人喜好

测试大写和小写分别对应的效果,代码如下
            
光文字,干燥,来张图片,醒醒脑
上面路径对应的图

是不是一下感觉就懂了大小写的区别了

接下来就来画一些基本的图形(直线就不画了,上面有了),感受下vectorDrawable

先来画个圆吧
漂亮吧

代码如下

        
再来个难度高点的
懵逼了吧
代码如下
    

**贝赛曲线绘制很简单的,但是实际用到比较少,我暂时就不做讲解了,下一篇博客的文章末尾我会给出一些学习的链接
h和v方法是太简单,读者一试便知,就不绘制了
**

更多相关文章

  1. android自定义控件:可旋转View:可作为ImageView、ImageButton
  2. android 使用覆盖图
  3. Android开发实践:用PopupWindow实现自定义Dailog
  4. Android(安卓)2.2 API demos -- Dialog
  5. [Android]获取未安装的APK图标
  6. Android中View自定义XML属性详解以及R.attr与R.styleable的区别
  7. Android使用selector自定义按钮
  8. Android(安卓)自定义上面圆角下面直角的ImageView
  9. android 自定义view之绘制(二)

随机推荐

  1. 之所以被裁也许是少了这些东西 [每日前端
  2. 年终总结 | 小鹿给读者拜年啦!
  3. JavaScript中的执行上下文和堆栈[每日前
  4. 现代浏览器探秘(part 1):架构 [每日前端夜
  5. 讲真,Markdown有啥魅力,竟让如此多人入迷!
  6. 深入探讨 Undefined [每日前端夜话(0x0E)
  7. 《大前端吊打面试官系列》之备战面试篇!
  8. 现代浏览器探秘(part2):导航[每日前端夜
  9. 用Python和Tableau对母婴商品销量进行数
  10. 浅议 Promise/Futures 模型 [每日前端夜