question: public boolean draw ( Canvas canvas ) { update ( ) ; final float centerX = mBounds . centerX ( ) ; final float centerY = mBounds . height ( ) - mRadius ; canvas . scale ( 1.f , Math . min ( mGlowScaleY , 1.f ) * mBaseGlowScale , centerX , 0 ) ; final float displacement = Math . max ( 0 , Math . min ( mDisplacement , 1.f ) ) - 0.5f ; float translateX = mBounds . width ( ) * displacement / 2 ; mPaint . setAlpha ( ( int ) ( 0xff * mGlowAlpha ) ) ; canvas . drawCircle ( centerX + translateX , centerY , mRadius , mPaint ) ; boolean oneLastFrame = false ; if ( mState == STATE_RECEDE && mGlowScaleY == 0 ) { mState = STATE_IDLE ; oneLastFrame = true ; } return mState != STATE_IDLE || oneLastFrame ; }
target:  Draw into the provided canvas. Assumes that the canvas has been rotated accordingly and the size has been set. The effect will be drawn the full width of X=0 to X=width, beginning from Y=0 and extending to some factor < 1.f of height.