我正在创建一个动态壁纸应用。我想要的是,在这个应用程序中经过一段时间后,电影对象将在surfaceHolder
canvas
上绘制其框架。
我的代码是
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 :(得分: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);
}
您需要将timer
设为final
才能工作