我得到一個片段,它有一個名爲RingProgress
的控件,它只是一個根據給定的百分比值填充自身的環。例如,如果我這樣做:當試圖設置隨時間變化的值時,Android視圖不會更新
ringProgress.setProgress(20);
這意味着20%的戒指現在會被填滿。
我想要做的是動畫環充滿幾秒鐘。所以我試圖做的是這樣的:
@Override
public void onResume()
{
super.onResume();
HandlerThread handlerThread = new HandlerThread("countdown");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
handler.post(new Runnable()
{
@Override
public void run()
{
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
int totalSeconds = secondsToStart + minutesToStart * 60;
int secondsPassed = 0;
@Override
public void run()
{
if(secondsPassed == totalSeconds)
{
timer.cancel();
}
final int currentProgress = (secondsPassed/totalSeconds) * 100;
secondsPassed++;
getActivity().runOnUiThread(new Runnable()
{
@Override
public void run()
{
mRingProgressBar.setProgress(currentProgress);
}
});
}
}, 0, 1000);
}
});
}
問題是直到時間到了才顯示環的更新。例如,如果我將它設置爲5秒,那麼當碎片加載時,戒指設置爲0,則5秒鐘內沒有任何反應,然後戒指一次性全部100%。
我該如何啓動這個動畫合適嗎?
你申請記錄/斷點,看看是否一切叫什麼名字? – dumazy
'ringProgress.setProgress(20); '只有當你設置'ringProgress.setMax(100)'時,纔會有20%'; – Idan
這是通過處理程序執行的強制嗎? –