在Xamarin Forms中对AbsoluteLayout项目进行动画处理

3
滑块从这里开始。
<Slider x:Name = "one" AbsoluteLayout.LayoutBounds="0.5, 0.9, 0.6, 0.1" AbsoluteLayout.LayoutFlags="All" />

我想对其进行动画处理,使其向上移动并稍微变宽,因此我使用了以下代码片段:

然后要对其进行动画处理,使其向上移动并稍微变宽,因此我使用了以下代码片段:

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

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

有没有想法如何对由绝对布局定位的项进行动画处理?


@DiegoRafaelSouza 我正在使用 Xamarin.Forms.Android。不确定如何在那里编写“显示布局边界”。 - Carlos Rodrigez
one.Bounds 可能是什么? - Carlos Rodrigez
我现在可以在手机上找到它,这会如何帮助解决问题? - Carlos Rodrigez
你能否更新问题描述或展示你现在处于哪个步骤吗?或者我们又回到了起点吗? - Diego Rafael Souza
@DiegoRafaelSouza 差不多回到了起点。没有取得实质性进展。我可能可以使用“ScaleTo”,但这并不能给我想要的精确动画效果。 - Carlos Rodrigez
显示剩余3条评论
2个回答

3

我无法清晰地想象您期望的效果是什么,但我敢打赌它应该像这样:

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

我添加了增加和减少的效果,只是为了更清楚地说明


今早我尝试了一下,但没有成功。不过,等我回家后我会更认真地尝试!很令人兴奋 :) - Carlos Rodrigez
如果您遇到任何问题,请告诉我。我已经测试过这个解决方案,并将其屏幕截图为gif格式,以显示效果是如何的(它在原始大小和扩展大小之间交替)。 - Diego Rafael Souza
1
我刚意识到我从未接受过你的答案。它运行得很好! - Carlos Rodrigez

0
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接