欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android动画之xml实现属性动画

程序员文章站 2023-10-29 12:08:52
android动画之xml实现属性动画。 属性动画也可以在xml文件实现,来看看吧 xml文件实现方法 先在res文件下右键,选择android resource directory 在第二栏res...

android动画之xml实现属性动画。

属性动画也可以在xml文件实现,来看看吧

xml文件实现方法

先在res文件下右键,选择android resource directory 在第二栏resource type里面,我们可以看到有anim和animator两个选项,第一个是用来创建补间动画的包类型,第二个就是用来创建属性动画的

填写合适的包名,创建成功之后就可以在这个包下创建自己的属性动画的xml文件了

xml文件的结点名

:对应valueanimator

:对应objectanimator

:对应animatorset

animator的属性

android:duration:每次动画播放的时长

android:valuefrom:初始动化值;取值范围为float,int和color,如果取值为float对应的值样式应该为89.0,取值为int时,对应的值样式为:89;当取值为clolor时,对应的值样式为 #333333;

android:valueto:动画结束值;取值范围同样是float,int和color这三种类型的值;

android:startoffset:动画激活延时;对应代码中的startdelay(long delay)函数;

android:repeatcount:动画重复次数

android:repeatmode:动画重复模式,取值为repeat和reverse;repeat表示正序重播,reverse表示倒序重播

android:valuetype:表示参数值类型,取值为inttype和floattype;与android:valuefrom、android:valueto相对应。如果这里的取值为inttype,那么android:valuefrom、android:valueto的值也就要对应的是int类型的数值。如果这里的数值是floattype,那么android:valuefrom、android:valueto的值也要对应的设置为float类型的值。非常注意的是,如果android:valuefrom、android:valueto的值设置为color类型的值,那么不需要设置这个参数;

android:interpolator:设置插值器;这个插值器说过很多次了,就不再说了,有需要的同学可以去我的前几篇博客看看

xml加载到代码

valueanimator valueanimator = (valueanimator) animatorinflater.loadanimator(myactivity.this,r.animator.animator);

valueanimator.start();

objectanimator的属性

android:propertyname:对应属性名,即objectanimator所需要操作的属性名。

其它字段的意义与animator的意义与取值是一样的,下面再重新列举一下。

- android:duration:每次动画播放的时长

- android:valuefrom:初始动化值;取值范围为float,int和color;

- android:valueto:动画结束值;取值范围同样是float,int和color这三种类型的值;

- android:startoffset:动画激活延时;对应代码中的startdelay(long delay)函数;

- android:repeatcount:动画重复次数

- android:repeatmode:动画重复模式,取值为repeat和reverse;repeat表示正序重播,reverse表示倒序重播

- android:valuetype:表示参数值类型,取值为inttype和floattype;与android:valuefrom、android:valueto相对应。如果这里的取值为inttype,那么android:valuefrom、android:valueto的值也就要对应的是int类型的数值。如果这里的数值是floattype,那么android:valuefrom、android:valueto的值也要对应的设置为float类型的值。非常注意的是,如果android:valuefrom、android:valueto的值设置为color类型的值,那么不需要设置这个参数;

- android:interpolator:设置插值器;

xml加载到代码

objectanimator animator = (objectanimator) animatorinflater.loadanimator(myactivity.this,

r.animator.object_animator);

animator.settarget(mtv1);

animator.start();

同样是使用loadanimator加载对应的xml动画。然后使用animator.settarget(mtv1);绑定上动画目标。因为在xml中,没有设置目标的参数,所以我们必须通过代码将目标控件与动画绑定。

set的属性

只有一个属性android:ordering:表示动画开始顺序,取值有两个,together表示同时开始动画,sequentially表示逐个开始动画;

xml加载到代码

animatorset set = (animatorset) animatorinflater.loadanimator(myactivity.this,

r.animator.set_animator);

set.settarget(mtv1);

set.start();

分析可知

使用xml文件指定只能有一组区间值,不像我们用代码可以指定好几个

使用xml文件不能设置target,只能人为设置

就这些吧,不难理解,个人还是喜欢用代码实现,因为方便灵活。