@Override protected void onDraw(Canvas canvas){
  super.onDraw(canvas);
  if (mBitmapCoverImage != null)   canvas.drawBitmap(mBitmapCoverImage,0,0,mPaintCoverImage);
  canvas.drawRect(0,0,mWidth,mHeight,mPaintCoverMask);
  mDrawableBottomShadow.draw(canvas);
  canvas.drawRect(rectFEmptyProgress,mPaintEmptyProgress);
  canvas.drawRect(0,mHeight - mProgressHeight,mCurrentProgressPosition,mHeight,mPaintLoadedProgress);
  canvas.drawRect(0,0,mCurrentProgressPosition,mHeight,mPaintProgressMask);
  mTextPassedDuration=secondsToTime(mCurrentSeconds);
  mPaintTextDuration.getTextBounds(mTextPassedDuration,0,mTextPassedDuration.length(),rectFTextDuration);
  canvas.drawText(mTextPassedDuration,mWidth / 30,mHeight - mWidth / 30 - rectFTextDuration.height(),mPaintTextDuration);
  mTextLeftDuration=secondsToTime(mMaxSeconds - mCurrentSeconds);
  mPaintTextDuration.getTextBounds(mTextLeftDuration,0,mTextLeftDuration.length(),rectFTextDuration);
  canvas.drawText(mTextLeftDuration,(29 * mWidth / 30) - rectFTextDuration.width(),mHeight - mWidth / 30 - rectFTextDuration.height(),mPaintTextDuration);
}

@ Override protected void onDraw ( Canvas canvas ) { super . onDraw ( canvas ) ; if ( mBitmapCoverImage != null ) canvas . drawBitmap ( mBitmapCoverImage , 0 , 0 , mPaintCoverImage ) ; canvas . drawRect ( 0 , 0 , mWidth , mHeight , mPaintCoverMask ) ; mDrawableBottomShadow . draw ( canvas ) ; canvas . drawRect ( rectFEmptyProgress , mPaintEmptyProgress ) ; canvas . drawRect ( 0 , mHeight - mProgressHeight , mCurrentProgressPosition , mHeight , mPaintLoadedProgress ) ; canvas . drawRect ( 0 , 0 , mCurrentProgressPosition , mHeight , mPaintProgressMask ) ; mTextPassedDuration = secondsToTime ( mCurrentSeconds ) ; mPaintTextDuration . getTextBounds ( mTextPassedDuration , 0 , mTextPassedDuration . length ( ) , rectFTextDuration ) ; canvas . drawText ( mTextPassedDuration , mWidth / 30 , mHeight - mWidth / 30 - rectFTextDuration . height ( ) , mPaintTextDuration ) ; mTextLeftDuration = secondsToTime ( mMaxSeconds - mCurrentSeconds ) ; mPaintTextDuration . getTextBounds ( mTextLeftDuration , 0 , mTextLeftDuration . length ( ) , rectFTextDuration ) ; canvas . drawText ( mTextLeftDuration , ( 29 * mWidth / 30 ) - rectFTextDuration . width ( ) , mHeight - mWidth / 30 - rectFTextDuration . height ( ) , mPaintTextDuration ) ; }
where the magic happens
