【发布时间】:2020-09-08 05:09:18
【问题描述】:
private async void moveMessage()
{
movingLabel = new Label();
movingLabel.HorizontalTextAlignment = TextAlignment.Center;
stackLayoutContainingMovingText.Children.Add(movingLabel);
Animation animation = new Animation();
double height = Application.Current.MainPage.Height;
movingLabel.Text = "MESSAGE";
animation.Commit(movingLabel, "animation", 20, 0, Easing.Linear, (d, f) =>
{
movingLabel.TranslateTo(0, height, 0, Easing.Linear);
movingLabel.TranslateTo(0, -height, 2000, Easing.Linear);
});
await Task.Delay(2000);
stackLayoutContainingMovingText.Children.Remove(movingLabel);
}
每次单击按钮时我都会调用此方法。 这将为文本标签设置动画,使其从屏幕底部移动到顶部。
出于某种原因,我必须创建一个新标签并将其添加到 stacklayout 子项中,因为如果我不这样做,这个动画只会发生一次并且不会重复。
目前这种代码可以工作,但它会在动画期间将页面上的所有控件向上和向下推送。 我还希望能够多次按下按钮,这应该允许多个标签同时向上动画。
【问题讨论】:
-
我认为当您在堆栈布局中添加标签时,其他控件会向上移动,因为它包含的空间。你能分享你的 XAML 吗?
标签: c# xamarin animation label