Android中矢量动画

Android中用<path> 标签来创建SVG,就好比控制着一支画笔,从一点到一点,动一条线。

<path> 标签 支持一下属性
M = (Mx, y) 移动到x,y,并不会划线
L (Lx, y) 直线连到x,y,还有简化命令H(x) 水平连接、V(y)垂直连接
Z,没有参数,连接起点和终点
C=(Cx1, y1, x2, y2, x, y),控制点x1,y1 x2,y2,终点x,y
Q=(Qx1, y1, x, y),控制点x1,y1,终点x,y
A(Arx, ry, rotation, flag1, flag2, x, y) 弧线在(椭圆)
rx,ry 椭圆的半轴
rotation:值得是椭圆的X轴与水平方向顺时针的夹角
flag1: z只有两个值1 和0 1表示大脚弧线,0表示小角弧线
flag2:1和0 表示顺时针和逆时针
X,y 终点坐标

表示不是很理解

drawable下建xml文件

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="100.0"
android:viewportHeight="100.0">
<group android:name="test1"
android:rotation="0">
<path
android:strokeWidth="2"
android:strokeColor="#77ff33"
android:pathData="M25,25 L25,50 L50, 50,L50,25z"
/>
</group>
</vector>

其中的width,height,viewportWidth, viewportHeight 分别表示不同的含义,width和height表示的是矢量图的真实大小

viewportWidth和viewportheight表示的是矢量图的划分比例,后面path中的使用的参数就是根据这两个值进行转化的。
比如上面的code,就200 划分了100份,那么其中的L50,50 表示的就是整个矢量图的正中间,所以width,height和viewportWidth, viewportHeight的比列一定要保持一致,否则就会变形。

画出了矢量图,肯定少不了动画;

属性动画中有个ObjectAnimator用于实现动画效果,在这里同样适用

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="4000"
android:propertyName="rotation"
android:valueFrom="0"
android:valueTo="360"/>

propertyName 用来填写属性

动画定义好了,矢量图也有了,那怎么样把他们整合到一块呢,我觉得应该也可以类似属性动画一样,将矢量图制定给ImageView,然后在给ImageView制定动画。
当然还有另外的方法更强大,利用animated-vector 把矢量图和动画整合到一起
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/vector1">
<target
android:name="test1"
android:animation="@animator/obhectanimotr1"
/>
</animated-vector>

http://www.open-open.com/lib/view/open1467861100069.html 和 http://blog.csdn.net/xu_fu/article/details/44004841 这个博客很不错

在上面的博客的例子中会有用到propertyName 中trimPathStart,这个属性的意思是按照0到1的百分比绘制图形的路径,trimPathEnd同理

时间: 2024-08-02 14:13:41

Android中矢量动画的相关文章

Android中的动画

Android中的动画分为两大类:视图动画(View Animation)和属性动画(Property Animation).视图动画又分为帧动画(Frame Animation)和补间动画(Tween) 视图动画:只实现动画效果而不改变控件本身的属性            属性动画:以实现动画效果改变控件本身的属性 帧动画:实现帧动画,首先在drawable文件夹中放上动画资源(一个animation-list标签的xml文件,里面是一个个item), 然后在代码上,第一步:获取要显示动画效果

android中Animation动画的连续播放与播放完毕后停留在最后的状态

我们做安卓应用的苦逼程序员们常常会需要用到Animation也就是动画.比如做地图功能的时候.我们在手机旋转时需要根据手机重力感应来调整地图的角度,让它上面的“北”一直指向地球的北面...好多人做动画的时候会遇到这么两个难题(我也曾经遇到过):1:动画执行完了一遍后又立刻恢复到了初始状态,或者动画只能不断循环动作.[问题:我想让动画动到某个位置或转到某个角度后停在那里,该如何做呢?]2:点击按钮一.动画从0度转到了10度,我再点击按钮二.需要动画从之前的10度位置再继续转到20度.再点击按钮三.

初识android中的动画

动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍.掌握基本的动画效果在成熟的软件开发中不可或缺.除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对于产品的印象.因此本文给出安卓设计中几种常见的动画效果. 基础知识 在介绍安卓中的动画效果之前,有必要介绍一下安卓中的图片处理机制.图片的特效包括图形的缩放.镜面.倒影.旋转.平移等.图片的特效处理方式是将原图的图形矩阵乘以一个特效矩阵,形成一个新的图形矩阵来实现的.矩阵Matrix 类,维护了一个

Android中的动画学习总结

android中动画可分为三种:帧动画,补间动画,和属性动画.其中属性动画是google推荐的,它可以实现前面两种动画的效果,运用起来更加灵活. 帧动画:顾名思义,就是一帧一帧的图片,快速播放形成的动画. 具体实现步骤如下: 第一:新建一个drawable资源 以animation-list 为根节点创建资源文件. 第二:给ImageView或者其他View设置关联drawable.可以作为background或者src. 第三:在java代码中,通过View.getBackground():或

Android笔记(六十三) android中的动画——逐帧动画( frame-by-frame animation)

就好像演电影一样,播放实现准备好的图片,来实现动画效果. 逐帧动画需要用到AnimationDrawable类,该类主要用于创建一个逐帧动画,然后我们把这个动画设置为view的背景即可. android提供两种方法为AnimationDrawable添加帧:XML定义和JAVA代码创建. XML 因为动画帧的资源需要是一个Drawable对象,所以需要把它放到Drawable目录下.在<animation-list>使用<item>来添加一帧 anima.xml <?xml

android中的动画之变换动画(Tween Animation)

android中有四大动画,它们分别是:变换动画(Tween Animation),帧动画(frame Animation),布局动画(layout Animation),属性动画(Property Animation ).今天我在这里简单的说下变换动画. 首先我们来说下animation种的那些属性(这些都是动画中的通用属性) xml属性 java方法 解释 android:detachWallpaper setDetachWallpaper(booean) 是否在在壁纸上运行 android

Android笔记(六十六) android中的动画——XML文件定义属性动画

除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在这个文件夹当中.然后在XML文件中我们一共可以使用如下三种标签: <animator>  对应代码中的ValueAnimator <objectAnimator>  对应代码中的ObjectAnimator <set>  对应代码中的AnimatorSet 使用XML设置动

详细讲解Android中的动画Animation(依据Android源码目录结构讲解)

Android中Animation如果仔细的整理一下,是一个非常值得学习的模块.由于其中涉及的内容比较多,大家经常在实际的开发的过程中,只是略微的攫取其中的部分进行运用,比较零碎,下面我就对照着源码中的Animation的实际代码结构,对Animation的实际体系进行讲解一下,希望对大家理解Andorid中的Animation的设计理念有一定的理解. 第一个类:AnimationThread 顾名思义,这个类的本质是一个线程.我们主要关注下面几点: 1.其内部有一个静态的内部类,Message

Android中的动画具体解释系列【2】——飞舞的蝴蝶

这一篇来使用逐帧动画和补间动画来实现一个小样例,首先我们来看看Android中的补间动画. Android中使用Animation代表抽象的动画类,该类包含以下几个子类: AlphaAnimation:透明改变动画. ScaleAnimation:大小缩放动画. TranslateAnimation:位移变化动画. RotateAnimation:旋转动画. 我们以下使用位移动画和逐帧动画来实现这个小样例.先看看执行效果: 蝴蝶挥动翅膀的逐帧动画文件: <?xml version="1.0