private void setDotRevealFraction(int dot, float fraction) {
        dotRevealFractions[dot] = fraction;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            postInvalidateOnAnimation();
        } else {
            postInvalidate();
        }
    }
Unselected dots can be in 6 states:
<p>
#1 At rest
#2 Joining neighbour, still separate
#3 Joining neighbour, combined curved
#4 Joining neighbour, combined straight
#5 Join retreating
#6 Dot re-showing / revealing
<p>
It can also be in a combination of these states e.g. joining one neighbour while
retreating from another.  We therefore create a Path so that we can examine each
dot pair separately and later take the union for these cases.
<p>
This function returns a path for the given dot **and any action to it's right** e.g. joining
or retreating from it's neighbour
library/src/main/java/com/heinrichreimersoftware/materialintro/view/InkPageIndicator.java