【问题标题】:Android, C#: Alpha Animation only works when inital alpha is at 1. Cannot start from 0?Android,C#:Alpha Animation 仅在初始 alpha 为 1 时有效。不能从 0 开始?
【发布时间】:2017-11-29 15:44:06
【问题描述】:

在我的应用程序中,我想要一个图像按钮来通过动画更改其 alpha。 imagebutton 的 alpha 在oncreate 0 中。它是不可见的。现在,当我点击某个按钮然后去:

Onclick
{
    mybutton.Alpha = 1f;
};

然后它将我的按钮 alpha 更改为 1。因此按钮是可见的。

我现在决定,我不希望按钮在一帧内简单地从 0 变为 1,而是希望它具有动画效果。说从 0 到 1 的 1 秒内。所以我写了这个函数:

private void AnimForBtnAwesome(float intAnimateToAlpha)
{
    AlphaAnimation animation = null;
    animation = new AlphaAnimation(0, intAnimateToAlpha);
    animation.FillAfter = true;
    animation.SetInterpolator(this, Android.Resource.Animation.AccelerateDecelerateInterpolator);
    animation.Duration = 1000;
    btnAwesome.StartAnimation(animation);
}

除非我的按钮的初始 alpha 设置为 1(在 oncreate 中),否则此函数什么都不做。 但我希望我的按钮在单击某个按钮之前不可见(上面的onclick)。

当我在oncreate 中将所述按钮的初始 alpha 设置为 1 并且动画开始时,它基本上会消失一帧,然后淡入一秒钟前的位置。这很愚蠢,似乎很容易解决。但是我一直无法找出为什么会这样以及如何绕过它。也许还有另一种隐藏按钮而不调整 alpha 的方法?虽然这看起来太麻烦了。为什么不让它通过动画将其初始 alpha 值更改为 1?

【问题讨论】:

    标签: c# android


    【解决方案1】:

    您可以尝试将 AnimationListener 添加到您的 alpha 动画中。在动画开始时,将按钮的可见性设置为可见,此时您应该能够看到初始 alpha 为 0 时 alpha 的变化。

    如果你想在动画结束,你可以根据需要设置视图的可见性。

    【讨论】:

    • 完美。对于那些想知道的人:我添加了这一行:btnAwesome.Visibility = ViewStates.Visible;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多