2016-07-13 3 views
1

ライブ壁紙アプリを作成しています。私はそれを望んで、いくつかの一定の間隔の後、このアプリケーションでは、ムービーオブジェクトはsurfaceHoldercanvasにそのフレームを描画します。どのようにTimerTaskを使用して連続して実行できますか?

私のコードは

public void startTimer() { 
    timer = new Timer(); 
    initializeTimerTask(); 

} 

private void initializeTimerTask() { 
    timerTask = new TimerTask() {@ 
    Override 
    public void run() { 
     Canvas canvas = holder.lockCanvas(); 
     canvas.save(); 
     // Adjust size and position so that 
     // the image looks good on your screen 
     canvas.scale(1f, 1f); 
     movie.draw(canvas, -500, 0); 
     canvas.restore(); 
     holder.unlockCanvasAndPost(canvas); 
     movie.setTime((int)(System.currentTimeMillis() % movie.duration())); 

    } 
    }; 
    timer.schedule(timerTask, 33); 
} 

あるしかし、私はこのアプリを実行したときにのみ、一つのフレームは、表面に表示され、それが時間の経過とともに変化していません。

私のコードのエラーは何ですか?時間の経過とともに表面が変化していることをどのように確認できますか?

答えて

0

あなたは

private void initializeTimerTask() { 
    timerTask = new TimerTask() {@ 
    Override 
    public void run() { 
     Canvas canvas = holder.lockCanvas(); 
     canvas.save(); 
     // Adjust size and position so that 
     // the image looks good on your screen 
     canvas.scale(1f, 1f); 
     movie.draw(canvas, -500, 0); 
     canvas.restore(); 
     holder.unlockCanvasAndPost(canvas); 
     movie.setTime((int)(System.currentTimeMillis() % movie.duration())); 
     timer.schedule(timerTask, 33);  
    } 
    }; 
    timer.schedule(timerTask, 33); 
} 

再びあなたのタスクの内部でそれを再スケジュールする必要があり、あなたがあなたのtimerfinalとを確認する必要があり一度あなたのタイマータスクのみ

を動作させるために予定されています
関連する問題