每当用户在EditText
上键入时,我都会启用按钮的可见性(从GONE
到VISIBLE
),并对其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 的速度播放。