2015-05-01 53 views
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()方法

+0

爲什麼你需要第二種方法中的runnable(除非爲了清晰起見刪除了一些內容)?你應該能夠直接調用invalidate(),除非你有問題從非UI線程調用它,因此請嘗試調用postInvalidate()。 – Whitney

+0

我不需要新的Runnable並將其交換爲postInvalidate(),但這不會改變滯後 – AljoSt

回答

0

動畫運行平穩如果Thread.Sleep(10)放入while循環。

相關問題