Android筆記(六十四) android中的動畫——補間動畫(tweened animation)

      補間動畫就是隻須要定義動畫開始和結束的位置,動畫中間的變化由系統去補齊。android

      補間動畫由一下四種方式:app

      1.AplhaAnimation——透明度動畫效果ide

      2.ScaleAnimation ——縮放動畫效果動畫

      3.TranslateAnimation——位移動畫效果this

      4.RotateAnimation——旋轉動畫效果spa

1.AplhaAnimation——透明度動畫效果

      AplhaAnimation的參數:code

      fromAlpha:動畫開始時的透明度,0.0表示徹底透明blog

      toAlpha:動畫結束時的透明度,1.0表示徹底不透明get

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button alpha;

    private AlphaAnimation alphaAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        alpha = (Button) findViewById(R.id.alpha);
        alpha.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.alpha:
            alphaAnimation = new AlphaAnimation(0.1f, 1);
            alphaAnimation.setDuration(1000);
            alphaAnimation.setRepeatCount(3);
            alphaAnimation.setRepeatMode(Animation.REVERSE);
            iv.startAnimation(alphaAnimation);
            alphaAnimation.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    Log.d("TTTT", "動畫開始");
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    Log.d("TTTT", "動畫重複");

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    Log.d("TTTT", "動畫結束");

                }
            });

            break;
        }
    }
}

      經常使用屬性:animation

      setRepeatCount(int repeatCount)——設置重複次數

      setFillAfter(boolean)——動畫執行完後是否停留在執行完的狀態

      setStartOffset(long startOffset)——執行前的等待時間 

2.ScaleAnimation ——縮放動畫效果

      ScakeAnimation的參數:

      fromX:動畫起始時X座標上的伸縮尺寸

      toX:動畫結束時X座標上的伸縮尺寸

      fromY:動畫起始時Y座標上的伸縮尺寸

      toY:動畫結束時Y座標上的伸縮尺寸

      pivotXType:動畫在X軸相對於物件位置類型

      pivotXValue:動畫相對於物件的X座標的開始位置

      pivotYType:動畫在Y軸相對於物件位置類型

      pivotYValue:動畫相對於物件的Y座標的開始位置

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button scale;

    private ScaleAnimation scaleAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        scale = (Button) findViewById(R.id.scale);
        scale.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.scale:
            scaleAnimation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);
            scaleAnimation.setDuration(3000);
            iv.startAnimation(scaleAnimation);

            break;
        }
    }
}

      經常使用屬性:

      setRepeatCount(int repeatCount)——設置重複次數

      setFillAfter(boolean)——動畫執行完後是否停留在執行完的狀態

      setStartOffset(long startOffset)——執行前的等待時間

3.TranslateAnimation——位移動畫效果

      TranslateAnimation的參數

      fromXDelta: 動畫開始的點離當前View X座標上的差值

      toXDelta: 動畫結束的點離當前View X座標上的差值

      fromYDelta: 動畫開始的點離當前View Y座標上的差值

      toYDelta動畫開始的點離當前View Y座標上的差值

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button transla;

    private TranslateAnimation translaAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        transla = (Button) findViewById(R.id.transla);
        transla.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.transla:
            translaAnimation = new TranslateAnimation(0, 150, 0, 0);
            translaAnimation.setDuration(1000);
            iv.startAnimation(translaAnimation);
            break;
        }
    }
}

      經常使用屬性:

      animation.setDuration(long durationMillis)——設置動畫持續時間
      animation.setRepeatCount(int i)——設置重複次數
      animation.setRepeatMode(Animation.REVERSE)——設置反方向執行

4.RotateAnimation——旋轉動畫效果

      RotateAnimation的參數:

      fromDegrees——旋轉的開始角度。

      toDegrees——旋轉的結束角度。

      pivotXType——X軸的伸縮模式,能夠取值爲ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

      pivotXValue——X座標的伸縮值。

      pivotYType——Y軸的伸縮模式,能夠取值爲ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

      pivotYValue——Y座標的伸縮值。

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

    private ImageView iv;
    private Button rotate;

    private RotateAnimation rotateAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        iv = (ImageView) findViewById(R.id.image);
        rotate = (Button) findViewById(R.id.rotate);
        rotate.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.rotate:
            rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                    0.5f);
            rotateAnimation.setDuration(2000);
            iv.startAnimation(rotateAnimation);

            break;
        }
    }
}

      經常使用方法:

              animation.setRepeatCount(int repeatCount)——設置重複次數               animation.setFillAfter(boolean)——動畫執行完後是否停留在執行完的狀態               animation.setStartOffset(long startOffset)——執行前的等待時間

相關文章
相關標籤/搜索