我想为图像的动作制作动画。 我有两个不同的实现,第一个涉及两个方法并顺利运行,另一个只需要一个方法和滞后。我宁愿使用第二个,但无法弄清楚导致滞后的原因。 我不认为这是计算新位置的代码,因为它非常简单,并且两种方法几乎相同(为了更好的可读性,我删除了它)
这是第一个:
public void animateCircleMovement(final long duration) {
// ...
post(new Runnable() {
@Override
public void run() {
animateStep();
}
});
}
public void animateStep() {
// ...
invalidate();
if(curTime<endTime) {
post(new Runnable() {
@Override
public void run() {
animateStep();
}
});
}
}
这是第二个
// ...
new Thread(new Runnable() {
@Override
public void run() {
while(currTime<endTime){
// ...
postInvalidate();
}
}).start();
为什么第二种实施会造成滞后?
编辑postInvalidate()方法
答案 0 :(得分:0)
如果将Thread.Sleep(10)
放入while循环,动画将顺利运行。