淡入动画播放两次



每当用户在EditText上键入时,我都会启用按钮的可见性(从GONEVISIBLE),并对其alpha值进行动画处理:

private void ShowSendButton()
{
if (sendbtn.Visibility != ViewStates.Visible)
{
sendbtn.Visibility = ViewStates.Visible;
sendbtn.Animate().Alpha(1.0f);
}
}

每当EditText为空时,按钮就会淡出,其可见性设置为GONE,如下所示:

private void HideSendButton()
{
if (sendbtn.Visibility != ViewStates.Gone)
{
sendbtn.Animate().Alpha(0.0f).SetDuration(150).Start();
sendbtn.Visibility = ViewStates.Gone;
}
}

ShowSendButton动画总是播放两次,即在动画完成后,按钮的 alpha 值重置回 0.0 并再次播放淡入淡出动画。

这在HideSendButton动画中不会发生。

这是触发动画的代码:

editText.TextChanged += (s, e) =>
{
if (e.AfterCount != 0)
{
ShowSendButton();
}
else
{
HideSendButton();
}
};

这是按钮 XML:

<Button
android:id="@+id/sendbtn"
android:layout_width="40dp"
android:layout_height="40dp
android:textColor="#fff"
android:visibility="gone"
android:alpha="0"/>

试试这些:

private void ShowSendButton()
{
if (sendbtn.Visibility != ViewStates.Visible)
{
sendbtn.ClearAnimation();
sendbtn.Animate().Alpha(1.0f).SetDuration(200).WithStartAction(new Runnable(() => {
sendbtn.Visibility = ViewStates.Visible;
})).Start();
}
}
private void HideSendButton()
{
if (sendbtn.Visibility != ViewStates.Gone)
{
sendbtn.ClearAnimation();
sendbtn.Animate().Alpha(0.0f).SetDuration(200).WithEndAction(new Runnable(() =>
{
sendbtn.Visibility = ViewStates.Gone;
})).Start();
}
}

在设备上进行了测试,似乎进展顺利。

希望它有帮助。

似乎通过将我的ShowSendButton代码更改为

private void ShowSendButton()
{
if (sendbtn.Visibility != ViewStates.Visible)
{
sendbtn.Visibility = ViewStates.Visible;
sendbtn.ClearAnimation();
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.Duration = 50;
sendbtn.Animation = fadeIn;
}
}

工作正常,但我似乎无法更改动画持续时间(fadeIn.Duration = 50不起作用)。无论我将其设置为什么值,它总是以大约 0.2s 的速度播放。

最新更新