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>