1. 说明
在我们开发项目过程中,肯定会有属性动画或者其他的动画,那么在使用完之后,该怎样去清除这些动画呢?下面我们就来看下清除动画的一般方式。
2. 常用方法
比如是58同城中的动画效果,里边涉及到2个子view,分别是 最上边的动画ShapeView和中间的椭圆ShadowView,那么清除类似这种动画的方式如下:
2.1 如果涉及到控件的显示与隐藏的话,可以直接使用INVISIBLE而不使用GONE
2.2 首先调用clearAnimation()方法,清除2个子view的动画;
2.3 然后获取父布局getParent(),然后调用parent.removeView(this),从父布局中移除子view;
2.4 最后直接removeAllViews();
代码如下:
/**
* 如果涉及到控件的显示与隐藏的话,可以直接使用INVISIBLE而不使用GONE
* @param visibility
*/
@Override
public void setVisibility(int visibility) {
// 不要再去排放和计算,少走一些系统的源码(View的绘制流程)
super.setVisibility(View.INVISIBLE);
// 清理动画
mShapeView.clearAnimation();
mShadowView.clearAnimation();
// 把LoadingView从父布局移除
ViewGroup parent = (ViewGroup) getParent();
if(parent != null){
parent.removeView(this);// 从父布局移除
removeAllViews();// 移除自己所有的View
}
mIsStopAnimator = true;
}