天天看點

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>