Android Tween Animation


Android的动画分两种,一种是Tween动画,实现视图的平移,缩放,旋转和淡入淡出的效果


1.RotateAnimation旋转动画

RotateAnimation rotat=new RotateAnimation(0, 180,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
rotat.setDuration(400);
rotat.setFillAfter(true);
mCollapse.startAnimation(rotat);

RotateAnimation rotat=new RotateAnimation(0, 180,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);

第一个参数:开始旋转的角度

第二个参数:结束旋转的角度

后面四个参数是确定旋转圆心的位置

第三个参数:旋转圆心X轴的坐标类型,分别为ABSOLUTE绝对坐标,RELATIVE_TO_SELF相对于自身坐标,RELATIVE_TO_PARENT相对于父控件坐标

                       (默认是ABSOLUTE绝对坐标)

第四个参数:旋转圆心X轴的坐标值

第五个参数:旋转圆心Y轴的坐标类型,分别为ABSOLUTE绝对坐标,RELATIVE_TO_SELF相对于自身坐标,RELATIVE_TO_PARENT相对于父控件坐标

                       (默认是ABSOLUTE绝对坐标)

第六个参数:旋转圆心Y轴的坐标值

rotat.setDuration(400);

设置动画的时间

rotat.setFillAfter(true);

设置动画结束后,保持住动画结束时候的状态

这个示例旋转动画的效果是,以自己的中心为圆心,顺时针旋转180,动画时间为400ms,动画结束后保持旋转后的状态


2.TranslateAnimation平移动画

TranslateAnimation animationDown=new TranslateAnimation(0, 0, 0, listView.getHeight()-image.getTop());			
animationDown.setDuration(400);
animationDown.setFillAfter(true);
image.startAnimation(animationDown);

这里的X,Y轴的坐标差值,都是以这个view的中心为坐标原点,往右是X轴正方向,往下为Y轴的正方向

需要说明的是,这个坐标原点是始终不变的,即使这个view已经平移,这个坐标原点还是原来那个

TranslateAnimation animationDown=new TranslateAnimation(0, 0, 0, listView.getHeight()-image.getTop());

第一个参数:动画开始位置在X轴,相对于坐标原点的差值

第二个参数:动画结束位置在X轴,相对于坐标原点的差值

第三个参数:动画开始位置在Y轴,相对于坐标原点的差值

第四个参数:动画结束位置在Y轴,相对于坐标原点的差值

这个示例平移动画的效果是,从image的坐标原点开始,X轴的位置不变,往Y轴正方向平移listView.getHeight()-image.getTop(),动画时间400ms,image停留在动画结束的位置(但是坐标原点还是原来那个)


3.ScaleAnimation缩放动画

ScaleAnimation scaleAnimation=new ScaleAnimation(1.0f, 0.5f, 1.0f, 0.5f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RESTART,0.5f);
scaleAnimation.setDuration(400);
scaleAnimation.setFillAfter(true);
image.startAnimation(scaleAnimation);

前面四个参数的大小,都是相对与自身大小的伸缩倍数

第一个参数:动画开始时,view在X轴上的伸缩尺寸

第二个参数:动画结束时,view在X轴上的伸缩尺寸

第三个参数:动画开始时,view在Y轴上的伸缩尺寸

第四个参数:动画结束时,view在Y轴上的伸缩尺寸

后面四个参数确定动画开始的X和Y轴的位置,以这个view的中心为坐标原点

第五个参数:动画相对于view在X轴上的位置类型

第六个参数:动画相对于view在X轴上的开始位置

第七个参数:动画相对于view在Y轴上的位置类型

第八个参数:动画相对于view在Y轴上的开始位置

这个示例缩放动画的效果是,在X轴和Y轴上,从坐标中心到相对于自身大小一半的位置开始缩放0.5倍,看上去的效果就是这个view自身原点缩小一倍。

4.AlphaAnimation淡入淡出动画

AlphaAnimation alphaAnimation=new AlphaAnimation(1.0f, 0.5f);
alphaAnimation.setDuration(400);
alphaAnimation.setFillAfter(true);
view.startAnimation(alphaAnimation);
AlphaAnimation alphaAnimation=new AlphaAnimation(1.0f, 0.5f);  //淡化效果范围是1.0-0.0

第一个参数:动画开始时的淡化值

第二个参数:动画结束时的淡化值

这个示例缩放动画的效果是,这个view从1.0f淡化到0.5f


默认动画都是匀速变化的,我们可以指定四种Interpolator来定义动画的变化速率

1.AccelerateInterpolator,在动画开始的时候速率变化比较慢,然后开始加速

2.DecelerateInterpolator,在动画开始的时候速率变化比较慢,然后开始减速

3.AccelerateDecelerateInterpolator,在动画开始的开始和结束的时候速率变化比较慢,中间的时候速率变化加快

4.LinearInterpolator,动画匀速变化

5.CycleInterpolator,动画循环播放特定速率,速率改变沿着正弦曲线

我们只需要一行代码就可以设置动画改变速率

animation.setInterpolator(new AccelerateInterpolator());















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值