補(bǔ)間動(dòng)畫(huà)是指定開(kāi)始和結(jié)束的圖像狀態(tài),自動(dòng)生成需要顯示的過(guò)度圖像的動(dòng)畫(huà)。補(bǔ)間動(dòng)畫(huà)又分為四種:移動(dòng),縮放,旋轉(zhuǎn),通明度。下面以移動(dòng)補(bǔ)間動(dòng)畫(huà)來(lái)做簡(jiǎn)單說(shuō)明,效果是把一個(gè)ImageView從左上角,向右下方向移動(dòng),然后返回到起始點(diǎn),中間對(duì)動(dòng)畫(huà)狀態(tài)進(jìn)行監(jiān)聽(tīng),效果如圖:

下面簡(jiǎn)述其主要步驟:
1、定義動(dòng)畫(huà)文件:
Java代碼  - <translate xmlns:android="http://schemas./apk/res/android"
- android:duration="5000"
- android:fromXDelta="0"
- android:fromYDelta="0"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:toXDelta="200"
- android:toYDelta="300" />
說(shuō)明:
- android:interpolator:動(dòng)畫(huà)渲染器,有三種渲染器可以設(shè)
置:accelerate_decelerate_interpolator,accelerate_interpolator,decelerate_interpolator, 它們分別對(duì)應(yīng)的效果是:開(kāi)始加速中間減速,一直加速,一直減速。
- fromXDelta;動(dòng)畫(huà)起始位置的X坐標(biāo);
- fromYDelta:動(dòng)畫(huà)起始位置的Y坐標(biāo);
- toXDelta:動(dòng)畫(huà)結(jié)束位置的X坐標(biāo);
- toYDelta:動(dòng)畫(huà)結(jié)束位置的Y坐標(biāo);
- duration:動(dòng)畫(huà)持續(xù)時(shí)間,單位毫秒。
2、加載并啟動(dòng)動(dòng)畫(huà):
Java代碼  - import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.animation.Animation;
- import android.view.animation.AnimationUtils;
- import android.view.animation.Animation.AnimationListener;
- import android.widget.ImageView;
-
- public class TranslateActivity extends Activity implements AnimationListener {
-
- private static final String TAG = "Translate";
-
- private ImageView imageView;
- private Animation translateAnimation;
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- imageView = (ImageView) findViewById(R.id.imageView1);
-
- // 裝載動(dòng)畫(huà)文件
- translateAnimation = AnimationUtils.loadAnimation(this, R.xml.translate);
-
- // 設(shè)置動(dòng)畫(huà)監(jiān)聽(tīng)器
- translateAnimation.setAnimationListener(this);
-
- // 設(shè)置重復(fù)次數(shù)
- translateAnimation.setRepeatCount(1);
-
- // 設(shè)置重復(fù)模式
- translateAnimation.setRepeatMode(Animation.REVERSE);
-
- // 啟動(dòng)動(dòng)畫(huà)
- // imageView.setAnimation(translateAnimation);
- // translateAnimation.start();
-
- imageView.startAnimation(translateAnimation);
-
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- Log.i(TAG, "onAnimationEnd");
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
- Log.i(TAG, "onAnimationRepeat");
- }
-
- @Override
- public void onAnimationStart(Animation animation) {
- Log.i(TAG, "onAnimationStart");
- }
-
- }
修改上面的某些代碼,猜想效果,并和實(shí)際效果作對(duì)比,有時(shí)會(huì)發(fā)現(xiàn)很有趣的現(xiàn)象!:)
縮放動(dòng)畫(huà)的XML示例代碼:
Java代碼  - <set xmlns:android="http://schemas./apk/res/android"
- android:shareInterpolator="false" >
-
- <scale
- android:duration="500"
- android:fromXScale="1"
- android:fromYScale="0.1"
- android:pivotX="50%"
- android:pivotY="50%"
- android:startOffset="100"
- android:toXScale="1"
- android:toYScale="1.0" />
-
- </set>
旋轉(zhuǎn)動(dòng)畫(huà)的XML示例代碼如下:
Java代碼  - <rotate xmlns:android="http://schemas./apk/res/android"
- android:duration="10000"
- android:fromDegrees="0"
- android:interpolator="@anim/linear_interpolator"
- android:pivotX="200%"
- android:pivotY="300%"
- android:repeatCount="infinite"
- android:repeatMode="restart"
- android:toDegrees="360" />
3、多說(shuō)一句:
使用代碼同樣可以實(shí)現(xiàn)從XML加載動(dòng)畫(huà)一樣的效果,有興趣的話,可以試試看?。海?/p>
|