如何解决在执行动作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 举报,一经查实,本站将立刻删除。