如何在Xamarin Forms上创建和重复动画

我正在尝试重复我的动画,我想要的是我的按钮从宽度边缘的屏幕中间开始并返回到另一个宽度边缘,到目前为止我得到了这个。

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 Paramenter也不会重复。

从这里开始!

通过调用Commit方法,可以运行使用Animation类创建的动画,该动画可能包含也可能不包含子动画。 此方法指定动画的持续时间,以及控制是否重复动画的回调

后来的post:

在Commit方法中指定了以下参数:[…] – 第七个参数(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);