属性动画 - 关于清除动画方法

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;
    }

你可能感兴趣的:(属性动画 - 关于清除动画方法)