【问题标题】:Animate AbsoluteLayout item in Xamarin forms在 Xamarin 表单中为 AbsoluteLayout 项目设置动画
【发布时间】:2018-02-20 17:17:59
【问题描述】:

滑块是这样开始的。

<Slider x:Name = "one" AbsoluteLayout.LayoutBounds="0.5, 0.9, 0.6, 0.1" AbsoluteLayout.LayoutFlags="All" />

然后我想对其进行动画处理,使其向上并变宽一些,因此我使用了以下代码 sn-p:

await one.LayoutTo(new Rectangle(0.5, 0.1, 0.8, 0.1), 1500, Easing.CubicInOut)

当该代码运行时,滑块会完全从屏幕上消失。

知道如何为绝对布局定位的项目设置动画吗?

【问题讨论】:

  • @DiegoRafaelSouza我正在使用 Xamarin.Forms.Android。不知道怎么写出show layout bounds那里
  • one.Bounds 也许?
  • 我现在可以在手机上找到它,这将如何解决问题?
  • LayoutTo 效果运行时,您会看到 Slider 是否离开屏幕,或者是否太小而无法看到。然后你可以调整你需要的。
  • @DiegoRafaelSouza 啊好小费!放在左上角,超级超级超级小。

标签: c# xamarin xamarin.forms


【解决方案1】:

我无法清楚地想象你所期望的效果,但我敢打赌它是这样的:

var newBounds = new Rectangle(one.Bounds.X - 10, one.Bounds.Y -5, one.Bounds.Width + 20, one.Bounds.Height +10);
one.LayoutTo(newBounds, 1500, Easing.CubicInOut); 

看起来像这样:

我添加了一个增加和减少的效果只是为了澄清

【讨论】:

  • 今天早上试了很短暂但没有成功,但我回家后会更彻底地试一试!令人兴奋:)
  • 如果您遇到麻烦,请告诉我。我已经测试过这个解决方案,并将屏幕截图作为 gif 来展示效果的样子(它在原始大小和扩展大小之间交替)。
  • 我才意识到我从来没有接受过你的回答。效果很好!
【解决方案2】:
public static async Task AnimateViewInAbsoluteLayout(View view, Rectangle rectAbsolute, Rectangle rectDest, uint time, Easing easing = null)
        { 
            await view.LayoutTo(rectDest, time, easing);
            AbsoluteLayout.SetLayoutBounds(view, rectAbsolute);
            AbsoluteLayout.SetLayoutFlags(view, AbsoluteLayoutFlags.All);
        }

用法:

AnimateViewInAbsoluteLayout(viewToMove, AbsoluteLayout.GetLayoutBounds(viewDest), viewDest.Bounds, 250, Easing.Linear);

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    相关资源
    最近更新 更多