每当用户输入GONE
时,我都会启用按钮的可见性(从VISIBLE
到EditText
),并设置其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"/>
答案 0 :(得分:1)
试试这些:
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();
}
}
在设备上测试过,似乎进展顺利。
希望它有所帮助.-
答案 1 :(得分:0)
通过将我的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.2秒左右。