Xamarin中显示或隐藏的动画按钮

时间:2017-03-27 10:44:46

标签: c# android xamarin xamarin.android

我在ListView中有一个按钮,它根据按下ActionBar按钮显示和隐藏。

按钮位于GetView功能中

ImageButton btnDel = view.FindViewById<ImageButton>(Resource.Id.btn_row_del);
if(_isEdit)
{
    if(btnDel.Visibility == ViewStates.Gone)
    {
        btnDel.Animate().TranslationX(0).SetDuration(2000);
    }                
}
else
{
    if (btnDel.Visibility == ViewStates.Visible)
    {
        btnDel.Animate().TranslationX(btnDel.Width).SetDuration(2000);
    }
}

但动画似乎并没有起作用。 如何为列表视图中的按钮设置动画。

2 个答案:

答案 0 :(得分:0)

为动画添加Start()

btnDel.Animate().TranslationX(btnDel.Width).SetDuration(2000).Start();

答案 1 :(得分:0)

当您按下操作栏时,您可以立即将按钮设置为已消失或可见。

通过添加以下回调侦听器,您需要在动画结束时设置按钮消失或可见:

    private void Bt2_Click(object sender, System.EventArgs e)
    {
        if (bt1.Visibility == ViewStates.Visible)
        {
            AlphaAnimation disappearAnimation = new AlphaAnimation(1, 0);
            disappearAnimation.Duration = 2000;
            bt1.StartAnimation(disappearAnimation);
            disappearAnimation.AnimationStart += DisappearAnimation_AnimationStart;
            disappearAnimation.AnimationEnd += DisappearAnimation_AnimationEnd;
        }
        else
        {
            AlphaAnimation disappearAnimation = new AlphaAnimation(0, 1);
            disappearAnimation.Duration = 2000;
            bt1.StartAnimation(disappearAnimation);
            disappearAnimation.AnimationStart += DisappearAnimation_AnimationStart;
            disappearAnimation.AnimationEnd += DisappearAnimation_AnimationEnd;
        }
    }

    private void DisappearAnimation_AnimationStart(object sender, Animation.AnimationStartEventArgs e)
    {
        if (bt1.Visibility == ViewStates.Visible)
        {
            bt1.Animate().TranslationX(bt1.Width).SetDuration(2000);
        }
        else
        {
            bt1.Animate().TranslationX(0).SetDuration(2000);
        }
    }

    private void DisappearAnimation_AnimationEnd(object sender, Animation.AnimationEndEventArgs e)
    {
        if (bt1.Visibility == ViewStates.Visible)
        {
            bt1.Visibility = ViewStates.Invisible;
        }
        else
        {
            bt1.Visibility = ViewStates.Visible;
        }
    }

屏幕截图:

enter image description here