我得到了一个片段,它有一个名为的控件RingProgress
,它只是一个根据给定百分比值填充自身的环。例如,如果我这样做:
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%。
如何正确启动此动画?