Xamarin.Forms - 同时动画2件事(推动画)

时间:2016-05-06 14:11:50

标签: animation xamarin xamarin.forms

我有一个Xamarin表单页面,其中包含一个包装所有内容的绝对布局。在其中,我有填充整个空间的内容,并留下了80的填充,然后我有一个80宽的左侧导航侧边栏,位于主要内容的顶部:

enter image description here

我想要一种修改过的" push"动画,这意味着做两件事:

  1. 将左侧导航的宽度增加100(至180)
  2. 将主要内容翻译为100
  3. (请注意,使用TranslateTo()会非常简单,但左侧导航需要增加宽度,而不是向右移动,并且没有WidthTo()方法。

    我可以自己做#1就好了。

    我可以自己做#2就好了。

    但是我无法让他们同时进行动画制作。如果我首先运行左导航动画(通过.Commit()),只有主要内容动画。如果我首先运行主内容动画,则既不动画也不动画。奇怪!这是怎么回事?

    这是我使用的基本代码:

    var leftNavAnimation = new Animation(
        callback: x => leftNav.WidthRequest = x,
        start: 80,
        end: 180,
        easing: Easing.Linear
    );
    
    var mainContentAnimation = new Animation(
        callback: x => mainContent.TranslationX = x,
        start: 0,
        end: 100,
        easing: Easing.Linear
    );
    
    leftNavAnimation.Commit(this, "leftNavAnimationName", length: animationLength);
    pageContentAnimation.Commit(this, "mainContentAnimationName", length: animationLength);
    

1 个答案:

答案 0 :(得分:0)

我发现.Commit()的第一个参数需要引用你动画的元素。所以改变:

mainContentAnimation.Commit(this, "mainContentAnimationName", length: animationLength);

要:

mainContentAnimation.Commit(mainContent, "mainContentAnimationName", length: animationLength);

修正了它。