Xamarin表示ProgressBar Stop

时间:2016-03-22 08:20:08

标签: c# xamarin progress-bar xamarin.forms

在Xamarin Forms中停止进度条动画的最佳方法是什么?进展始于:

animProgressBar = async () => { 
 ... 
 await progressBar.ProgressTo (0, 10000, Easing.Linear); 
 ... 
};

我想停止动画并重新启动它。我尝试过像

这样的事情
progressBar.AbortAnimation("ProgressTo");

没有成功。

3 个答案:

答案 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);
        }
    })
}

结果:

enter image description here

答案 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