private void drawUnselected(Canvas canvas) {
    combinedUnselectedPath.rewind();

    // draw any settled, revealing or joining dots
    for (int page = 0; page < pageCount; page++) {
      int nextXIndex = page == pageCount - 1 ? page : page + 1;
      // TODO: Path.op should be supported in KitKat but causes the app to hang for Nexus 5.
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Path unselectedPath = getUnselectedPath(page,
            dotCenterX[page],
            dotCenterX[nextXIndex],
            page == pageCount - 1 ? INVALID_FRACTION : joiningFractions[page],
            dotRevealFractions[page]);
        combinedUnselectedPath.op(unselectedPath, Path.Op.UNION);
      } else {
        canvas.drawCircle(dotCenterX[page], dotCenterY, dotRadius, unselectedPaint);
      }
    }

    // draw any retreating joins
    if (retreatingJoinX1 != INVALID_FRACTION) {
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        combinedUnselectedPath.op(getRetreatingJoinPath(), Path.Op.UNION);
      }
    }
    canvas.drawPath(combinedUnselectedPath, unselectedPaint);
  }
As this class <b>must</b> act as the {@link ViewPager.OnPageChangeListener} for the ViewPager
(as set by {@link #setViewPager(android.support.v4.view.ViewPager)}).  Applications may set a
listener here to be notified of the ViewPager events.

@param onPageChangeListener
java/com/google/android/apps/authenticator/howitworks/PagingIndicator.java