天天看点

android动画(1)视图动画的简单示例

1.动画的属性表

官方文档

  https://developer.android.com/guide/topics/resources/animation-resource#Property

1.1 常用属性

它们可以通过代码setXXX,getXXX,也可在xml中配置。 

属性[类型] 功能 备注
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator 指定一个动画插值器 见1.2 插值器
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复后,下次开始动画的行为

Animation.RESTART:重新开始    

Animation.REVERSE:倒放动画

startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变

0:保持Z Order不变

1:保持在最上层

-1:保持在最下层

fromXDelta X轴方向开始位置,可以是%,也可以是具体像素
toXDelta X轴方向结束位置,可以是%,也可以是具体像素
fromYDelta Y轴方向开始位置,可以是%,也可以是具体像素
toYDelta Y轴方向结束位置,可以是%,也可以是具体像素

1.2 插值器

@android:anim/accelerate_interpolator 越来越快
@android:anim/decelerate_interpolator 越来越慢
@android:anim/accelerate_decelerate_interpolator 先快后慢
@android:anim/anticipate_interpolator 先后退一小步然后向前加速
@android:anim/overshoot_interpolator 快速到达终点超出一小步然后回到终点
@android:anim/anticipate_overshoot_interpolator 到达终点超出一小步然后回到终点
@android:anim/bounce_interpolator 到达终点产生弹球效果,弹几下回到终点
@android:anim/linear_interpolator 均匀速度

2.代码

2.1 开始动画

1   public void start(){
2         Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.rotate_anim);
3         mScanStation.startAnimation(animation);
4     }      

2.2 停止动画

1     public void stop(){
2         mImageView.clearAnimation();
3         mImageView.setRotation(0);//复位到0度
4         
5     }      

3.xml配置动画

  每个xm一个独立文件 ,在res/anim 下.

3.1 透明

1 <?xml version="1.0" encoding="utf-8"?>
2 <alpha xmlns:android="http://schemas.android.com/apk/res/android"
3     android:duration="1000"
4     android:fromAlpha="1.0"
5     android:repeatMode="restart"
6     android:repeatCount="-1"
7     android:interpolator="@android:anim/accelerate_decelerate_interpolator"
8     android:toAlpha="0.0" />      

3.2 旋转

1 <rotate   
2     xmlns:android="http://schemas.android.com/apk/res/android"  
3     android:fromDegrees="0"  
4     android:toDegrees="360"  
5     android:duration="1000"  
6     android:pivotX="50%"  
7     android:pivotY="50%"  
8     >  
9 </rotate>      

3.3 缩放

1 <?xml version="1.0" encoding="utf-8"?>
 2 <scale
 3     android:fromXScale="1"
 4     android:toXScale="1.1"
 5     android:fromYScale="1"
 6     android:toYScale="1.1"
 7     android:repeatMode="restart"
 8     android:repeatCount="-1"
 9     android:duration="1500"
10     android:pivotX="50%"
11     android:pivotY="50%"
12     xmlns:android="http://schemas.android.com/apk/res/android">
13 </scale>      

3.4 平移

1 <?xml version="1.0" encoding="utf-8"?>  
 2 <translate   
 3     xmlns:android="http://schemas.android.com/apk/res/android"  
 4     android:fromXDelta="0"  
 5     android:toXDelta="0"  
 6     android:fromYDelta="0"  
 7     android:toYDelta="100"  
 8     android:duration="1000"   
 9     >  
10 </translate>       

3.5 组合动画

1 <?xml version="1.0" encoding="utf-8"?>  
2 <set android:duration="1000"   
3     android:shareInterpolator="true"  
4     xmlns:android="http://schemas.android.com/apk/res/android">  
5       
6     <alpha android:fromAlpha="0" android:toAlpha="1"></alpha>  
7     <translate android:fromXDelta="0" android:toXDelta="100"  
8         android:fromYDelta="0" android:toYDelta="100"></translate>  
9 </set>