diff options
| author | Aurimas Liutikas <aurimas@google.com> | 2015-11-19 11:23:22 -0800 |
|---|---|---|
| committer | Aurimas Liutikas <aurimas@google.com> | 2015-11-19 22:44:26 +0000 |
| commit | 7c78904c44cfd4cef02e41ef3f341e9f87047d66 (patch) | |
| tree | 23e3ded66232afe3209155c11555ffdacd0ca853 | |
| parent | 27f59164a0d383cb7df89858d457725e39c52ee7 (diff) | |
| download | android_frameworks_support-7c78904c44cfd4cef02e41ef3f341e9f87047d66.tar.gz android_frameworks_support-7c78904c44cfd4cef02e41ef3f341e9f87047d66.tar.bz2 android_frameworks_support-7c78904c44cfd4cef02e41ef3f341e9f87047d66.zip | |
Reset SwipeRefreshLayout on window detaches.
This fixes a bug when SwipeRefreshLayout gets detached when
scale down animation is still playing causing onAnimationEnd to
never get called.
Bug: 21515801
Change-Id: Ieece09f8900fa47c14b81229490f047a55e156ba
| -rw-r--r-- | v4/java/android/support/v4/widget/SwipeRefreshLayout.java | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/v4/java/android/support/v4/widget/SwipeRefreshLayout.java b/v4/java/android/support/v4/widget/SwipeRefreshLayout.java index 18b762cfd2..06db6f2f29 100644 --- a/v4/java/android/support/v4/widget/SwipeRefreshLayout.java +++ b/v4/java/android/support/v4/widget/SwipeRefreshLayout.java @@ -185,22 +185,34 @@ public class SwipeRefreshLayout extends ViewGroup implements NestedScrollingPare mListener.onRefresh(); } } + mCurrentTargetOffsetTop = mCircleView.getTop(); } else { - mProgress.stop(); - mCircleView.setVisibility(View.GONE); - setColorViewAlpha(MAX_ALPHA); - // Return the circle to its start position - if (mScale) { - setAnimationProgress(0 /* animation complete and view is hidden */); - } else { - setTargetOffsetTopAndBottom(mOriginalOffsetTop - mCurrentTargetOffsetTop, - true /* requires update */); - } + reset(); } - mCurrentTargetOffsetTop = mCircleView.getTop(); } }; + private void reset() { + mCircleView.clearAnimation(); + mProgress.stop(); + mCircleView.setVisibility(View.GONE); + setColorViewAlpha(MAX_ALPHA); + // Return the circle to its start position + if (mScale) { + setAnimationProgress(0 /* animation complete and view is hidden */); + } else { + setTargetOffsetTopAndBottom(mOriginalOffsetTop - mCurrentTargetOffsetTop, + true /* requires update */); + } + mCurrentTargetOffsetTop = mCircleView.getTop(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + reset(); + } + private void setColorViewAlpha(int targetAlpha) { mCircleView.getBackground().setAlpha(targetAlpha); mProgress.setAlpha(targetAlpha); |
