Android Tween动画与setVisibility冲突

一、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了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,192评论 25 708
  • 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今...
    未聞椛洺阅读 2,905评论 0 10
  • 上周在彭小六的早读会“听读”了采铜老师的《精进》,算是第三刷了。 又忘了 前两刷都是去年完成的,发现又忘得差不多了...
    Y先生说阅读 540评论 0 1
  • 跟上司提辞职我是要鼓足了多大的勇气,在内心默默演练了好久好久,本以为可以如所愿。可答复竟是至少要再为公司效力3个月...
    和小白的约定阅读 336评论 0 1
  • 清风徐来,河水潺潺追逐着流向远方,艳阳与水波互相逗弄,迸发出钻石的光芒,映得人眼花缭乱,还好这满眼的钻石只属于太阳...
    明沙水阅读 219评论 0 0

友情链接更多精彩内容