package com.dingtao.animotordemo;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation. Animator;
import android.animation.ValueAnimator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    Button button;
    ImageView goodsImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
//      按钮点击事件
        button.set Listener(new View. Listener() {
            @Override
            public void  (View v) {
//              设置0到10的整数变化
                final ValueAnimator valueAnimator = ValueAnimator.ofInt(60,0);
//              整个事件段是5秒
                valueAnimator.setDuration(60*1000);
//              数字均匀变化,也可设置其他的变化方式,先快后慢,先慢后快等......
                valueAnimator.setInterpolator(new LinearInterpolator());
//              监听每次改变时的值
                valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator animation) {
                        int value = (Integer) animation.getAnimatedValue();
                        button.setText(value+\"\");
                    }
                });
                valueAnimator.start();
            }
        });

        goodsImage = findViewById(R.id.goods_image);
        goodsImage.set Listener(new View. Listener() {
            @Override
            public void  (View v) {
                 Animator translationX =  Animator.ofFloat(goodsImage,\"translationX\",0,300f);
                 Animator translationY =  Animator.ofFloat(goodsImage,\"translationY\",0,500f);
                 Animator rotation =  Animator.ofFloat(goodsImage,\"rotation\",0,1060);

                AnimatorSet animatorSet = new AnimatorSet();  //组合动画
                animatorSet.play(translationX).with(rotation).before(translationY);
//                animatorSet.playTogether(translationX,translationY,rotation); //设置动画
                animatorSet.setDuration(3000);  //设置动画时间
                animatorSet.start(); //启动
            }
        });

    }

}
package com.dingtao.animotordemo;

import android.animation.Animator;
import android.animation. Animator;
import android.content.Context;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.LinearInterpolator;

public class MusicButton extends AppCompatImageView implements View. Listener {
    private  Animator  Animator;

    public static final int STATE_PLAYING =1;//正在播放
    public static final int STATE_PAUSE =2;//暂停
    public int state;

    public MusicButton(Context context) {
        super(context);
        init();
    }

    public MusicButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MusicButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        //第一个参数: 对象

        //第二个参数:属性:旋转:rotation;平移:translationX/translationY
        //缩放:scaleX/scaleY;透明:alpha

        //第三个参数:起始值
        //第四个参数:结束值
         Animator =  Animator.ofFloat(this,\"rotation\",0,360);
         Animator.setDuration(1000);
         Animator.setRepeatCount( Animator.INFINITE);
         Animator.setInterpolator(new LinearInterpolator());

         Animator.start();//动画开始
        state = STATE_PLAYING;
        set Listener(this);
    }

    @Override
    public void  (View v) {
        if (state == STATE_PAUSE){
             Animator.resume();//动画重新开始
            state = STATE_PLAYING;
        }else{
             Animator.pause();//动画暂停
            state = STATE_PAUSE;
        }
    }
}

 

收藏 打印