我正在触发动画,但是如果我第二次运行它,动画将在结束之前从错误的位置开始。
void btnRefreshAnimation()
{
float pointY = btnRefreshTable.GetY();
btnRefreshTable.Visibility = ViewStates.Visible;
anim = ObjectAnimator.OfFloat(btnRefreshTable, "y", pointY + 50.0f, pointY);
anim.SetDuration(2500);
anim.SetInterpolator(new OvershootInterpolator(5f));
anim.Start();
}
这是在Activity destroy上运行的
if (anim != null)
{
anim.Cancel();
anim.Dispose();
anim = null;
}
答案 0 :(得分:0)
请记住,是否曾经在XAML的Xamarin Forms中设置动画(甚至在后面的代码中)。您必须对Attribute进行初始设置,否则该属性也会“弹出”。
答案 1 :(得分:0)
在Y位置不移动时检索一次,创建一次动画,然后重新使用该位置:
void btnRefreshAnimation()
{
if (anim == null)
{
var startingY = button.GetY();
anim = ObjectAnimator.OfFloat(button, "y", startingY + 50.0f, pointY);
anim.SetAutoCancel(true);
anim.SetDuration(2500);
anim.SetInterpolator(new OvershootInterpolator(5f));
}
anim.Start();
}
注意:请确保在布局更改或旋转时重置(Dispose
和null
)动画。