如何同时执行多个动画?附代码寻求并行动画实现方案
让两个动画并行执行的解决方案
嘿,这问题很常见——你现在的代码因为用了连续的await,所以会等第一个动画完全结束才开始第二个。要让它们同时跑,只需要用Task.WhenAll()来把两个动画任务打包一起等待就行,改起来超简单!
修改后的代码
public async void OnClicked2Async(object sender, EventArgs e) { btn_login.SetValue(IsVisibleProperty, true); // 先启动两个动画任务,暂不等待单个任务完成 var loginBtnAnimation = btn_login.TranslateTo(0, 175, 1000); var novaContaBtnAnimation = btn_novaconta.TranslateTo(0, -60, 1000); // 同时等待两个动画任务完成,实现并行执行 await Task.WhenAll(loginBtnAnimation, novaContaBtnAnimation); }
为什么这样能行?
原来的写法里,await btn_login.TranslateTo(...)会暂停方法执行,直到这个动画做完才会往下走执行第二个动画。而现在我们先把两个动画任务启动(调用TranslateTo就会立刻开始动画,返回的Task代表动画的完成状态),然后用Task.WhenAll()告诉程序:等这两个任务都完成了再继续往下走。这样两个动画就会同时开始运行啦。
内容的提问来源于stack exchange,提问作者Maria Canelas




