@Override
        public void run() {
            // check the anim is finish
            if (mDone)
                return;

            // In this we can set the state to running
            isRealRunning = true;

            // check time
            mProgress += mInc;
            if (mProgress < 1) {
                final float interpolation = mInterpolator.getInterpolation(mProgress);
                // Notify
                onAnimateUpdate(interpolation);
                invalidateSelf();

                // Next
                final long currentTime = SystemClock.uptimeMillis();
                scheduleSelf(this, currentTime + FRAME_DURATION);

            } else {
                mDone = true;
                unscheduleSelf(this);

                // Notify
                onAnimateUpdate(1f);
                invalidateSelf();

                // Call end
                onAnimateEnd();
            }
        }
A animation post runnable {@link Runnable}
The class have animation status
caprice/ui/src/main/java/net/qiujuer/genius/ui/drawable/TouchEffectDrawable.java