在Xamarin Forms中停止进度条动画的最佳方法是什么?进展始于:
animProgressBar = async () => {
...
await progressBar.ProgressTo (0, 10000, Easing.Linear);
...
};
我想停止动画并重新启动它。我尝试过像
这样的事情progressBar.AbortAnimation("ProgressTo");
没有成功。
答案 0 :(得分:5)
我不确定是否可以取消ProgressTo
,我认为创建自己的动画是最简单的解决方案:
new Button
{
Text = "Kick progress bar",
Command = new Command(() =>
{
if (progressBar.AnimationIsRunning("SetProgress"))
{
progressBar.AbortAnimation("SetProgress");
}
else
{
progressBar.Animate("SetProgress",(arg) => { progressBar.Progress = arg; }, 8*60, 8*1000, Easing.Linear);
}
})
}
结果:
答案 1 :(得分:1)
我建议您设置progressBar.Progress = 0
以重置所有进度。
我做了一个简单的例子:
Device.StartTimer(System.TimeSpan.FromMilliseconds(200), () =>
{
myProgressBar.Progress += 0.01;
if (myProgressBar.Progress > .5)
{
myProgressBar.Progress = 0;
return false;
}
return true;
});
答案 2 :(得分:0)
您也可以使用progressBar.AbortAnimation("Progress");
因为它是源代码中动画的实际名称。
public Task<bool> ProgressTo(double value, uint length, Easing easing)
{
var tcs = new TaskCompletionSource<bool>();
this.Animate("Progress", d => Progress = d, Progress, value, length: length, easing: easing, finished: (d, finished) => tcs.SetResult(finished));
return tcs.Task;
}
https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/ProgressBar.cs#L37