为了账号安全,请及时绑定邮箱和手机立即绑定

淡入淡出动画播放两次

淡入淡出动画播放两次

C#
潇潇雨雨 2021-03-29 11:15:51
每当用户在上键入内容时,我都将启用按钮的可见性(从GONE到VISIBLE),并设置其alpha值的动画EditText。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"/>
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

试试这些:


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();

    }

}

在设备上进行了测试,效果似乎不错。


希望能帮助到你。-


查看完整回答
反对 回复 2021-04-10
?
智慧大石

TA贡献1946条经验 获得超3个赞

似乎通过将我的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的速度播放。


查看完整回答
反对 回复 2021-04-10
  • 2 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信