美文网首页DevSupport
Android Tween动画与setVisibility冲突

Android Tween动画与setVisibility冲突

作者: 枫叶丶鑫鑫 | 来源:发表于2017-02-20 17:49 被阅读91次

    一、Tween动画基础知识:

    Tween动画在Android中分为4类,它们分别是:
    AlphaAnimation(透明度动画)
    TranslateAnimation(平移动画)
    ScaleAnimation(缩放动画)
    RotateAnimation(旋转动画)
    都继承自android.view.Animation类,它们都是表示从一个状态A向状态B变化的一个过程,所以英文名字叫Tween动画、中文名叫:“补间动画”、“中间动画”。

    二、问题描述:

    当我们让一个控件进行平移、旋转等动画之后,希望这个控件隐藏,一般在Animation.AnimationListener()onAnimationEnd(Animation animation)方法中setVisibility(View.GONE),这时发现该控件并没有隐藏。

    三、问题原因:

    Tween动画在进行动画时,只能作用于View,而且视图动画改变的只是View的绘制效果,View真正的属性并没有改变,相当于说移动或者旋转的只是改控件的复制品,本不是原来控件;属性动画移动的是原来的控件,所以并不会出现该情况。

    四、解决方案:

    只需要调用一下clearAnimation()方法或者去掉setFillAfter(true)语句即可!
    实验证明只要在setVisibility之前设置View的mCurrentAnimation为null就可以,因此调用setAnimation(null)也是可以的。从源码来看setFillAfter为false时也会间接导致调用clearAnimation,而clearAnimation在这里使setVisibility有效的原因也是置mCurrentAnimation为null了。

    相关文章

      网友评论

        本文标题:Android Tween动画与setVisibility冲突

        本文链接:https://www.haomeiwen.com/subject/wuyewttx.html