Index: chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java |
index a7674a56f9a187651a118df069e0a8a3603fa31a..8181d42e9ffcd575b5c9a2180d1ec2dc8e7eb74b 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java |
@@ -5,6 +5,8 @@ |
package org.chromium.chrome.browser.toolbar; |
import android.animation.Animator; |
+import android.animation.AnimatorListenerAdapter; |
+import android.animation.AnimatorSet; |
import android.animation.ObjectAnimator; |
import android.annotation.SuppressLint; |
import android.content.Context; |
@@ -51,11 +53,14 @@ import org.chromium.chrome.browser.widget.TintedImageButton; |
import org.chromium.components.dom_distiller.core.DomDistillerService; |
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; |
import org.chromium.ui.base.WindowAndroid; |
+import org.chromium.ui.interpolators.BakedBezierInterpolator; |
/** |
* The Toolbar layout to be used for a custom tab. This is used for both phone and tablet UIs. |
*/ |
public class CustomTabToolbar extends ToolbarLayout implements LocationBar { |
+ private static final int CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS = 200; |
+ private static final int CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS = 150; |
private View mUrlInfoContainer; |
private UrlBar mUrlBar; |
private TextView mTitleBar; |
@@ -64,7 +69,8 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar { |
private int mSecurityIconType; |
private boolean mUseDarkColors; |
private TintedImageButton mCloseButton; |
- private Animator mSecurityButtonShowAnimator; |
+ |
+ private AnimatorSet mSecurityButtonShowAnimator; |
private boolean mBackgroundColorSet; |
/** |
@@ -89,9 +95,31 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar { |
mSecurityIconType = ConnectionSecurityLevel.NONE; |
mCustomActionButton = (ImageButton) findViewById(R.id.action_button); |
mCloseButton = (TintedImageButton) findViewById(R.id.close_button); |
- mSecurityButtonShowAnimator = ObjectAnimator.ofFloat(mSecurityButton, ALPHA, 1); |
- mSecurityButtonShowAnimator |
- .setDuration(ToolbarPhone.URL_FOCUS_CHANGE_ANIMATION_DURATION_MS); |
+ populateToolbarAnimations(); |
+ } |
+ |
+ private void populateToolbarAnimations() { |
+ mSecurityButtonShowAnimator = new AnimatorSet(); |
+ int securityIconButtonWidth = |
+ getResources().getDimensionPixelSize(R.dimen.location_bar_icon_width); |
+ Animator urlInfoContainerTranslateAnimator = |
+ ObjectAnimator.ofFloat(mUrlInfoContainer, TRANSLATION_X, securityIconButtonWidth); |
+ urlInfoContainerTranslateAnimator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE); |
+ urlInfoContainerTranslateAnimator.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS); |
+ |
+ Animator securityButtonAlphaAnimator = ObjectAnimator.ofFloat(mSecurityButton, ALPHA, 1); |
+ securityButtonAlphaAnimator.setInterpolator(BakedBezierInterpolator.FADE_IN_CURVE); |
+ securityButtonAlphaAnimator.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS); |
+ securityButtonAlphaAnimator.addListener(new AnimatorListenerAdapter() { |
+ @Override |
+ public void onAnimationStart(Animator animation) { |
+ mSecurityButton.setVisibility(VISIBLE); |
+ mUrlInfoContainer.setTranslationX(0); |
+ } |
+ }); |
+ |
+ mSecurityButtonShowAnimator.playSequentially( |
+ urlInfoContainerTranslateAnimator, securityButtonAlphaAnimator); |
} |
@Override |
@@ -344,7 +372,6 @@ public class CustomTabToolbar extends ToolbarLayout implements LocationBar { |
mSecurityButton.setVisibility(GONE); |
} else { |
if (mSecurityButtonShowAnimator.isRunning()) mSecurityButtonShowAnimator.cancel(); |
- mSecurityButton.setVisibility(VISIBLE); |
mSecurityButtonShowAnimator.start(); |
mUrlBar.deEmphasizeUrl(); |
} |