C# 如何在Xamarin窗体上创建和重复动画
我试着重复我的动画,我想要的是我的按钮从屏幕中间的宽度边缘转到另一个宽度边缘,到目前为止我得到了这个C# 如何在Xamarin窗体上创建和重复动画,c#,xamarin.forms,C#,Xamarin.forms,我试着重复我的动画,我想要的是我的按钮从屏幕中间的宽度边缘转到另一个宽度边缘,到目前为止我得到了这个 var exitRight = new Animation(callback: d => lab.TranslationX = d, start: 0, end: width,
var exitRight = new Animation(callback: d => lab.TranslationX = d,
start: 0,
end: width,
easing: Easing.Linear);
var enterLeft = new Animation(callback: d => lab.TranslationX = d,
start: width,
end: -width,
easing: Easing.Linear);
storyboard.Add(0, 0.5, exitRight);
storyboard.Add(0.5, 1, enterLeft);
storyboard.Commit(lab, "lab", length: 5000,repeat:()=> true);
问题是它不会返回,它穿过屏幕从另一侧返回,即使我传递Func
参数,它也不会重复 取自
通过调用Commit方法,可以运行使用animation类创建的动画,该类可能包含子动画,也可能不包含子动画。此方法指定动画的持续时间,以及除其他项目外,控制是否重复动画的回调
稍后的帖子:
在提交方法中指定了以下参数:
[...]
-第七个参数(repeat)是允许重复动画的回调。它在动画结束时调用,返回true表示动画应该重复
要使示例正常工作,我想您确实需要所有7参数
希望它能帮助你 我在缩放按钮上下两个单独的动画时遇到问题,因为在结束后,动画属性返回到开始值,是什么导致按钮img在那一刻闪烁。一个解决方案是在属性值达到其边界时,在回调函数中放置另一个动画
var animationDownSize = new Animation
(
callback: e => {
infoImageBtn.Scale = e;
if (e == 0.75)
{
var animationUpSize = new Animation
(
callback: d => infoImageBtn.Scale = d,
start: infoImageBtn.Scale,
end: infoImageBtn.Scale = 1,
easing: Easing.SinInOut
);
animationUpSize.Commit(infoImageBtn, "UpSize", length: 500);
}
},
start: infoImageBtn.Scale,
end: infoImageBtn.Scale = 0.75,
easing: Easing.SinInOut
);
animationDownSize.Commit(infoImageBtn, "DownSize", length: 500);
“第七个参数(repeat)是允许重复动画的回调。它在动画结束时被调用,返回true表示动画应该重复。”就是这样