	public void dispatchDraw(Canvas canvas) {
		long currentTime;
		if(startTime==0){
			startTime=SystemClock.uptimeMillis();
			currentTime=0;
		}else{
			currentTime=SystemClock.uptimeMillis()-startTime;
		}
		if(mStatus==OPENING){
			mScaleFactor=easeOut(currentTime, 3.0f, 1.0f, mAnimationDuration);
		}else if (mStatus==CLOSING){
			mScaleFactor=easeIn(currentTime, 1.0f, 3.0f, mAnimationDuration);
		}
		if(currentTime>=mAnimationDuration){
			isAnimating=false;
			if(mStatus==OPENING){
				mStatus=OPEN;
				dispatchFadingEvent(OnFadingListener.OPEN);
				clearChildrenCache();
				setChildrenDrawingCacheEnabled(true);
			}else if(mStatus==CLOSING){
				mStatus=CLOSED;
				dispatchFadingEvent(OnFadingListener.CLOSE);
			}
		}
		shouldDrawLabels=(currentTime>mAnimationDuration/2 && mStatus==OPENING)||(currentTime<mAnimationDuration/2 && mStatus==CLOSING);
		int alpha=255;
		if(isAnimating){
			float porcentajeScale=1.0f-((mScaleFactor-1)/3.0f);
			if(porcentajeScale>=0.9f)porcentajeScale=1;
			if(porcentajeScale<0)porcentajeScale=0;
			alpha=(int)(porcentajeScale*255);
			dispatchFadingAlphaEvent(alpha);
		}
		mPaint.setAlpha(alpha);
		if(mStatus!=CLOSED){
			super.dispatchDraw(canvas);
		}
	}

	public void dispatchDraw(Canvas canvas) {
		long currentTime;
		if(startTime==0){
			startTime=SystemClock.uptimeMillis();
			currentTime=0;
		}else{
			currentTime=SystemClock.uptimeMillis()-startTime;
		}
		if(mStatus==OPENING){
			mScaleFactor=easeOut(currentTime, 3.0f, 1.0f, mAnimationDuration);
		}else if (mStatus==CLOSING){
			mScaleFactor=easeIn(currentTime, 1.0f, 3.0f, mAnimationDuration);
		}
		if(currentTime>=mAnimationDuration){
			isAnimating=false;
			if(mStatus==OPENING){
				mStatus=OPEN;
				dispatchFadingEvent(OnFadingListener.OPEN);
				clearChildrenCache();
				setChildrenDrawingCacheEnabled(true);
			}else if(mStatus==CLOSING){
				mStatus=CLOSED;
				dispatchFadingEvent(OnFadingListener.CLOSE);
			}
		}
		shouldDrawLabels=(currentTime>mAnimationDuration/2 && mStatus==OPENING)||(currentTime<mAnimationDuration/2 && mStatus==CLOSING);
		int alpha=255;
		if(isAnimating){
			float porcentajeScale=1.0f-((mScaleFactor-1)/3.0f);
			if(porcentajeScale>=0.9f)porcentajeScale=1;
			if(porcentajeScale<0)porcentajeScale=0;
			alpha=(int)(porcentajeScale*255);
		}
		dispatchFadingAlphaEvent(alpha);
		mPaint.setAlpha(alpha);
		if(mStatus!=CLOSED){
			super.dispatchDraw(canvas);
		}
	}
