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表示动画应该重复。”就是这样