Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3334)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java

Issue 1804723002: [Offline pages] Showing offline bolt on chrome custom tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java
index 583779551655080c97e76db0105ceb21873e514b..fff29c85bc7bca83101495e1e99aeb32dfdb38eb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbarAnimationDelegate.java
@@ -33,8 +33,13 @@ class CustomTabToolbarAnimationDelegate {
private static final int CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS = 150;
private final View mSecurityButton;
- private final AnimatorSet mSecurityButtonShowAnimator;
- private final AnimatorSet mSecurityButtonHideAnimator;
+ private final View mOfflineButton;
+ private final AnimatorSet mNoneToSecurityButtonAnimator;
+ private final AnimatorSet mSecurityButtonToNoneAnimator;
+ private final AnimatorSet mNoneToOfflineButtonAnimator;
+ private final AnimatorSet mOfflineButtonToNoneAnimator;
+ private final AnimatorSet mSecurityButtonToOfflineButtonAnimator;
+ private final AnimatorSet mOfflineButtonToSecurityButtonAnimator;
private TextView mUrlBar;
private TextView mTitleBar;
@@ -44,47 +49,79 @@ class CustomTabToolbarAnimationDelegate {
/**
* Constructs an instance of {@link CustomTabToolbarAnimationDelegate}.
*/
- CustomTabToolbarAnimationDelegate(View securityButton, final View titleUrlContainer) {
+ CustomTabToolbarAnimationDelegate(
+ View securityButton, View offlineButton, final View titleUrlContainer) {
mSecurityButton = securityButton;
-
- mSecurityButtonShowAnimator = new AnimatorSet();
- int securityButtonWidth = securityButton.getResources()
- .getDimensionPixelSize(R.dimen.location_bar_icon_width);
- Animator translateRight = ObjectAnimator.ofFloat(titleUrlContainer,
- View.TRANSLATION_X, securityButtonWidth);
- translateRight.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
- translateRight.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS);
-
- Animator fadeIn = ObjectAnimator.ofFloat(mSecurityButton, View.ALPHA, 1);
- fadeIn.addListener(new AnimatorListenerAdapter() {
+ mOfflineButton = offlineButton;
+
+ // Both buttons have the same width.
+ int buttonWidth = securityButton.getResources().getDimensionPixelSize(
+ R.dimen.location_bar_icon_width);
+ Animator translateTitleRight =
+ ObjectAnimator.ofFloat(titleUrlContainer, View.TRANSLATION_X, buttonWidth);
+ translateTitleRight.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
+ translateTitleRight.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS);
+ translateTitleRight.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
- mSecurityButton.setVisibility(View.VISIBLE);
- mSecurityButton.setAlpha(0f);
titleUrlContainer.setTranslationX(0);
}
});
- fadeIn.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE);
- fadeIn.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS);
- mSecurityButtonShowAnimator.playSequentially(translateRight, fadeIn);
-
- mSecurityButtonHideAnimator = new AnimatorSet();
- Animator fadeOut = ObjectAnimator.ofFloat(mSecurityButton, View.ALPHA, 0);
- fadeOut.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
- fadeOut.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS);
-
- Animator translateLeft = ObjectAnimator.ofFloat(titleUrlContainer,
- View.TRANSLATION_X, -securityButtonWidth);
- translateLeft.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
- translateLeft.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS);
- translateLeft.addListener(new AnimatorListenerAdapter() {
+
+ Animator translateTitleLeft =
+ ObjectAnimator.ofFloat(titleUrlContainer, View.TRANSLATION_X, -buttonWidth);
+ translateTitleLeft.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
+ translateTitleLeft.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS);
+ translateTitleLeft.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mSecurityButton.setVisibility(View.GONE);
+ mOfflineButton.setVisibility(View.GONE);
titleUrlContainer.setTranslationX(0);
}
});
- mSecurityButtonHideAnimator.playSequentially(fadeOut, translateLeft);
+
+ Animator fadeSecurityButtonIn = createFadeButtonInAnimator(mSecurityButton);
+ Animator fadeSecurityButtonOut = createFadeButtonOutAnimator(mSecurityButton);
+
+ Animator fadeOfflineButtonIn = createFadeButtonInAnimator(mOfflineButton);
+ Animator fadeOfflineButtonOut = createFadeButtonOutAnimator(mOfflineButton);
+
+ mNoneToSecurityButtonAnimator = new AnimatorSet();
+ mNoneToSecurityButtonAnimator.playSequentially(translateTitleRight, fadeSecurityButtonIn);
+ mSecurityButtonToNoneAnimator = new AnimatorSet();
+ mSecurityButtonToNoneAnimator.playSequentially(fadeSecurityButtonOut, translateTitleLeft);
+ mNoneToOfflineButtonAnimator = new AnimatorSet();
+ mNoneToOfflineButtonAnimator.playSequentially(translateTitleRight, fadeOfflineButtonIn);
+ mOfflineButtonToNoneAnimator = new AnimatorSet();
+ mOfflineButtonToNoneAnimator.playSequentially(fadeOfflineButtonOut, translateTitleLeft);
+ mSecurityButtonToOfflineButtonAnimator = new AnimatorSet();
+ mSecurityButtonToOfflineButtonAnimator.playSequentially(
+ fadeSecurityButtonOut, fadeOfflineButtonIn);
+ mOfflineButtonToSecurityButtonAnimator = new AnimatorSet();
+ mOfflineButtonToSecurityButtonAnimator.playSequentially(
+ fadeOfflineButtonOut, fadeSecurityButtonIn);
+ }
+
+ Animator createFadeButtonInAnimator(final View button) {
+ Animator fadeButtonIn = ObjectAnimator.ofFloat(button, View.ALPHA, 1);
+ fadeButtonIn.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationStart(Animator animation) {
+ button.setVisibility(View.VISIBLE);
+ button.setAlpha(0f);
+ }
+ });
+ fadeButtonIn.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE);
+ fadeButtonIn.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS);
+ return fadeButtonIn;
+ }
+
+ Animator createFadeButtonOutAnimator(final View button) {
+ Animator fadeButtonOut = ObjectAnimator.ofFloat(button, View.ALPHA, 0);
+ fadeButtonOut.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
+ fadeButtonOut.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS);
+ return fadeButtonOut;
}
/**
@@ -154,23 +191,60 @@ class CustomTabToolbarAnimationDelegate {
});
}
+ void stopRunningAnimators() {
+ if (mNoneToSecurityButtonAnimator.isRunning()) mNoneToSecurityButtonAnimator.cancel();
+ if (mSecurityButtonToNoneAnimator.isRunning()) mSecurityButtonToNoneAnimator.cancel();
+ if (mNoneToOfflineButtonAnimator.isRunning()) mNoneToOfflineButtonAnimator.cancel();
+ if (mOfflineButtonToNoneAnimator.isRunning()) mOfflineButtonToNoneAnimator.cancel();
+ if (mSecurityButtonToOfflineButtonAnimator.isRunning()) {
+ mSecurityButtonToOfflineButtonAnimator.cancel();
+ }
+ if (mOfflineButtonToSecurityButtonAnimator.isRunning()) {
+ mOfflineButtonToSecurityButtonAnimator.cancel();
+ }
+ }
+
/**
* Starts the animation to show the security button. Will do nothing if the button is already
* visible.
*/
void showSecurityButton() {
if (mSecurityButton.getVisibility() == View.VISIBLE) return;
- if (mSecurityButtonShowAnimator.isRunning()) mSecurityButtonShowAnimator.cancel();
- mSecurityButtonShowAnimator.start();
+ stopRunningAnimators();
+ if (mOfflineButton.getVisibility() == View.VISIBLE) {
+ mOfflineButtonToSecurityButtonAnimator.start();
+ } else {
+ mNoneToSecurityButtonAnimator.start();
+ }
}
/**
- * Starts the animation to hide the security button. Will do nothing if the button is not
+ * Starts the animation to show the offline button. Will do nothing if the button is already
* visible.
*/
- void hideSecurityButton() {
- if (mSecurityButton.getVisibility() == View.GONE) return;
- if (mSecurityButtonHideAnimator.isRunning()) return;
- mSecurityButtonHideAnimator.start();
+ void showOfflineButton() {
+ if (mOfflineButton.getVisibility() == View.VISIBLE) return;
+ stopRunningAnimators();
+ if (mSecurityButton.getVisibility() == View.VISIBLE) {
+ mSecurityButtonToOfflineButtonAnimator.start();
+ } else {
+ mNoneToOfflineButtonAnimator.start();
+ }
+ }
+
+ /**
+ * Starts the animation to hide any buttons button. Will do nothing if no buttons are visible.
+ */
+ void hideButtons() {
+ if (mSecurityButton.getVisibility() == View.GONE
+ && mOfflineButton.getVisibility() == View.GONE) {
+ return;
+ }
+ stopRunningAnimators();
+ if (mSecurityButton.getVisibility() == View.VISIBLE) {
+ mSecurityButtonToNoneAnimator.start();
+ } else {
+ mOfflineButtonToNoneAnimator.start();
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698