問題:
有一個動畫,其中需要針對一個值的改變而畫,那個值會在650ms中照時間比例從0變到1,中間的值是float,作法如下。
mAnimator = ValueAnimator.ofFloat(0, 1);
mAnimator.setDuration(650);
mAnimator.addUpdateListener(...); // 每個animation的frame更新時都會callback
mAnimator.addListener(...); // animation的開始/結束/cancel/repeat
mAnimator.start();
但後來發現這個動畫會有卡頓的問題,並沒辦法均勻地變化比例。
解法:
所以我們改用TimerTask來做動畫,解決這個問題。
private Timer mTimer = new Timer(true);
private MyTimerTask mTimerTask = new MyTimerTask();
public class MyTimerTask extends TimerTask{
@Override
public void run() {
if(mActivity != null){
mActivity.runOnUiThread(new Runnable(){
@Override
public void run() {
.....
}
});
}
}
};
接著在要進行動畫的地方呼叫:
mTimer.scheduleAtFixedRate(mTimerTask,...);
沒有留言:
張貼留言