1
我想動畫的圖像運動。 我有兩種不同的實現,第一種涉及兩種方法並且運行順利,另一種只需要一種方法和滯後。我寧願使用第二個,但不知道是什麼導致了滯後。 我不認爲這是計算新位置的代碼,因爲它很簡單,這兩種方法幾乎相同(我刪除它更易讀)Android動畫延遲(兩種方法有什麼區別)
以下是第一條:
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()方法
爲什麼你需要第二種方法中的runnable(除非爲了清晰起見刪除了一些內容)?你應該能夠直接調用invalidate(),除非你有問題從非UI線程調用它,因此請嘗試調用postInvalidate()。 – Whitney
我不需要新的Runnable並將其交換爲postInvalidate(),但這不會改變滯後 – AljoSt