微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在执行动作Xamarin Android时动画按钮

如何解决在执行动作Xamarin Android时动画按钮

我有一个按钮,该按钮执行的操作需要3秒钟(从API读取数据并刷新屏幕)。执行动作时,我希望按钮旋转。 我的问题是3秒操作完成后它开始旋转... 并且,当它击中Clearanimation时,它会立即停止。

这是我的代码

this.refreshButton.Click += this.RefreshPendingOrders_Click;



 private void RefreshPendingOrders_Click(object sender,EventArgs e)
    {
        this.StartRotateAnimation();
        System.Threading.Thread.Sleep(3000);
        this.refreshButton.Clearanimation();
    }

    private void StartRotateAnimation()
    {
        
            var pivotX = this.refreshButton.Width / 2;
            var pivotY = this.refreshButton.Height / 2;
            var animation = new RotateAnimation(0f,360f,pivotX,pivotY)
            {
                Duration = 500,RepeatCount = 3
            };

            this.refreshButton.StartAnimation(animation);
    }

解决方法

问题是您正在调用Thread.Sleep(),如果发生Click EventHandler则将在UI线程上发生。这意味着您正在阻止UI线程,该线程负责使动画运行3秒钟。

您可以将代码更改为使用async / await,例如:

private async void RefreshPendingOrders_Click(object sender,EventArgs e)
{
    this.StartRotateAnimation();
    await Task.Delay(3000);
    this.refreshButton.ClearAnimation();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。