天天看點

Android開發之Animations(三)什麼是AnimationSet?AnimationSet的使用方法什麼是Interpolator?Interpolator的使用方法

什麼是AnimationSet?

1.AnimationSet是Animation的子類;

2.一個AnimationSet包含了一系列的Animation;

3.設定AnimationSet對象的屬性,相當于設定的AnimationSet對象包含的所有Animation對象屬性

4.使用AnimationSet可以整合多種動畫效果

AnimationSet的使用方法

1.在MainActivity.java中建立一個AnimationSet對象,然後再建立多個動畫對象

2.将多個動畫對象添加到AnimationSet對象中

3.設定AnimationSet對象的屬性

4.将ImageView對象與AnimationSet對象進行綁定

MainActivity.java:

package com.mycompany.animations3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.imageView);
        button = (Button) findViewById(R.id.button);

        button.setOnClickListener(new ButtonListener());
    }
    class ButtonListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            //  建立AnimationSet對象
            AnimationSet animationSet = new AnimationSet(true);
            //  建立多個動畫對象
            AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
            RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
                    Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f);
            //  将多個動畫對象添加到AnimationSet對象中
            animationSet.addAnimation(alphaAnimation);
            animationSet.addAnimation(rotateAnimation);
            //  設定AnimationSet對象的屬性
            animationSet.setDuration(3000);
            animationSet.setStartOffset(2000);
            //  将ImageView對象與AnimationSet對象進行綁定
            imageView.startAnimation(animationSet);
        }
    }
}
           

什麼是Interpolator?

Interpolator定義了動畫變化的速率,在Animations架構當中定義了以下幾種Interpolator:

AccelerateDecelerateInterpolator:在動畫開始與結束的地方速率改變比較慢,在中間的時候開始加速

AccelerateInterpolator:在動畫開始的地方速率改變比較慢,然後開始加速

CycleInterpolator:動畫循環播放特定的次數,速率沿着正弦曲線改變

DecelerateInterpolator:在動畫開始的地方速率改變比較慢,然後開始減速

LinearInterpolator:以均勻速率改變

Interpolator的使用方法

Interpolator屬性可以在Animation resource file中設定,也可以在代碼中進行設定

繼續閱讀