Index: chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java b/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
index babdce53210f925887ae7f713c5a3738d1fd3f46..78b3703e2ba535a4ba8376b06638360d9b793bad 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/banners/SwipableOverlayView.java |
@@ -18,6 +18,7 @@ import android.view.animation.DecelerateInterpolator; |
import android.view.animation.Interpolator; |
import android.widget.FrameLayout; |
+import org.chromium.chrome.browser.widget.animation.CancelAwareAnimatorListener; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content_public.browser.GestureStateListener; |
@@ -275,6 +276,7 @@ public abstract class SwipableOverlayView extends FrameLayout { |
+ computeScrollDifference(scrollOffsetY, scrollExtentY); |
translation = Math.max(0.0f, Math.min(mTotalHeight, translation)); |
setTranslationY(translation); |
+ updateVisibility(); |
} |
}; |
} |
@@ -314,9 +316,23 @@ public abstract class SwipableOverlayView extends FrameLayout { |
mCurrentAnimation.setDuration(duration); |
mCurrentAnimation.addListener(mAnimatorListener); |
mCurrentAnimation.setInterpolator(mInterpolator); |
+ mCurrentAnimation.addListener(new CancelAwareAnimatorListener() { |
+ @Override |
+ public void onEnd(Animator animator) { |
+ updateVisibility(); |
+ } |
+ }); |
mCurrentAnimation.start(); |
} |
+ private void updateVisibility() { |
+ if (getTranslationY() >= getHeight()) { |
+ if (getVisibility() != GONE) setVisibility(GONE); |
+ } else { |
+ if (getVisibility() != VISIBLE) setVisibility(VISIBLE); |
+ } |
+ } |
+ |
private int computeScrollDifference(int scrollOffsetY, int scrollExtentY) { |
return scrollOffsetY + scrollExtentY - mInitialOffsetY; |
} |