Xamarin.Forms:动画页面/布局转换

时间:2017-01-18 02:53:25

标签: xaml xamarin xamarin.forms

所以,假设我有一个Xamarin.Forms应用程序,MainPage具有以下布局:

+------------------------------+
|                              |
|     +-------+  +-------+     |
|     |       |  |       |     |
|     |Button1|  |Button2|     |
|     |       |  |       |     |
|     +-------+  +-------+     |
|                              |
+------------------------------+

现在用户点击Button1后,我希望页面转换为以下布局:

+------------------------------+
|---+                          |
||B1|   +-------+  +-------+   |
+---+   |       |  |       |   |
|       |Button3|  |Button4|   |
+---+   |       |  |       |   |
||B2|   +-------+  +-------+   |
|---+                          |
+------------------------------+

棘手的部分是,我想要一个很好的动画转换:

  • 按钮3和4从最右边滑动
  • 按钮1和2正在移动并轻松缩放到左侧的目标位置。

有没有办法在xamarin.forms xaml中实现这种行为?

我现在能想到的唯一方法是使用AbsoluteLayout并为按钮初始位置(或其容器)设置像素的绝对值。并通过使用适当的参数调用每个元素TranslateToScaleTo方法来设置目标布局来进行转换。

但是如果我想在它们之间有更多的布局和转换,并支持更多的屏幕分辨率,我想这种方法很快就会变得难以维护。

如果我将这些布局放在不同的页面上,并在页面之间进行这样的自定义转换,我想如果可能的话,它会变得更加困难。

有关如何处理此问题的任何提示?

1 个答案:

答案 0 :(得分:0)

在NavigationPage容器中从页面1导航到页面2时,可以使用共享元素过渡来移动内容。

我制作了一个nuget包,以在xamarin形式xaml中使用共享动画过渡,此处为源代码:

https://github.com/Evolutionlab/Xamarin.Plugin.SharedTransitions

这里是Nuget软件包:

https://www.nuget.org/packages/Xamarin.Plugin.SharedTransitions/