Hide custom offset circle when transferring nested scroll events

If an app has a custom offset for the start of their circle, and are not scaling it up
into existance, its because they are hiding it behind something.
That something might move when nested scrolling events are dispatched.
Hide the circle view when it gets back to its original hidden position.
Fixes b/24333860 Pull to refresh circle shows up unexpectedly in SDK 23

Change-Id: Ia87c1c650048ab1a6bc35641e875a2ea57c8b740
diff --git a/v4/java/android/support/v4/widget/SwipeRefreshLayout.java b/v4/java/android/support/v4/widget/SwipeRefreshLayout.java
index d3204db..a5365e3 100644
--- a/v4/java/android/support/v4/widget/SwipeRefreshLayout.java
+++ b/v4/java/android/support/v4/widget/SwipeRefreshLayout.java
@@ -760,6 +760,15 @@
             moveSpinner(mTotalUnconsumed);
         }
 
+        // If a client layout is using a custom start position for the circle
+        // view, they mean to hide it again before scrolling the child view
+        // If we get back to mTotalUnconsumed == 0 and there is more to go, hide
+        // the circle so it isn't exposed if its blocking content is moved
+        if (mUsingCustomStart && dy > 0 && mTotalUnconsumed == 0
+                && Math.abs(dy - consumed[1]) > 0) {
+            mCircleView.setVisibility(View.GONE);
+        }
+
         // Now let our nested parent consume the leftovers
         final int[] parentConsumed = mParentScrollConsumed;
         if (dispatchNestedPreScroll(dx - consumed[0], dy - consumed[1], parentConsumed, null)) {