// 按鈕模擬心臟跳動
private void playHeartbeatAnimation() {
AnimationSet animationSet = new AnimationSet(true);
animationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f));
animationSet.addAnimation(new AlphaAnimation(1.0f, 0.4f));
animationSet.setDuration(200);
animationSet.setInterpolator(new AccelerateInterpolator());
animationSet.setFillAfter(true);
animationSet.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
AnimationSet animationSet = new AnimationSet(true);
animationSet.addAnimation(new ScaleAnimation(1.8f, 1.0f, 1.8f,
1.0f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f));
animationSet.addAnimation(new AlphaAnimation(0.4f, 1.0f));
animationSet.setDuration(600);
animationSet.setInterpolator(new DecelerateInterpolator());
animationSet.setFillAfter(false);
// 實現心跳的View
imageView.startAnimation(animationSet);
}
});
// 實現心跳的View
imageView.startAnimation(animationSet);
}
由於這是一個循環的動畫,所以需要開一個線程來進行動畫的實現,當然還有另外一個方法,就是在一個動畫結束開始另一個動畫,在另一個動畫結束開始這個動畫也可以,這邊示例用的是線程。
new Thread(){
public void run() {
while (true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
runOnUiThread(new Runnable() {
public void run() {
playHeartbeatAnimation();
}
});
}
};
}.start();
