前言
大家在音樂類app中,經(jīng)晨韪看到類似唱片的旋轉(zhuǎn)動畫铝阐。如何利用 屬性動畫 ObjectAnimator和 補(bǔ)間動畫 RotateAnimation 分別實(shí)現(xiàn)這一效果呢?
用ObjectAnimator實(shí)現(xiàn)
直接上代碼
public class MyActivity extends Activity {
@BindView(R.id.id_iv_cover)
CircleImageView idIvCover;
private ObjectAnimator mAnimator;
public static final int STATE_PLAYING = 1;//正在播放
public static final int STATE_PAUSE = 2;//暫停
public static final int STATE_STOP = 3;//停止
public int mState;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void initView() {
setContentView(R.layout.activity_my);
ButterKnife.bind(this);
initAnimator();
idIvCover.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playMusic();
}
});
}
public void playMusic() {
if (mState == STATE_STOP) {
mAnimator.start();//動畫開始
mState = STATE_PLAYING;
} else if (mState == STATE_PAUSE) {
mAnimator.resume();//動畫重新開始
mState = STATE_PLAYING;
} else if (mState == STATE_PLAYING) {
mAnimator.pause();//動畫暫停
mState = STATE_PAUSE;
}
}
private void initAnimator() {
mState = STATE_STOP;
mAnimator = ObjectAnimator.ofFloat(idIvCover, "rotation", 0.0f, 360.0f);
mAnimator.setDuration(5000);//設(shè)定轉(zhuǎn)一圈的時間
mAnimator.setRepeatCount(Animation.INFINITE);//設(shè)定無限循環(huán)
mAnimator.setRepeatMode(ObjectAnimator.RESTART);// 循環(huán)模式
mAnimator.setInterpolator(new LinearInterpolator());// 勻速
}
}
效果
4909537-2ff2b21bcd30fa98.gif