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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/toolbar/CustomTabToolbar.java

Issue 1218923002: Add a slide animation to security lock appearing on a custom tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed duration and added spaces Created 5 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.toolbar; 5 package org.chromium.chrome.browser.toolbar;
6 6
7 import android.animation.Animator; 7 import android.animation.Animator;
8 import android.animation.AnimatorListenerAdapter;
9 import android.animation.AnimatorSet;
8 import android.animation.ObjectAnimator; 10 import android.animation.ObjectAnimator;
9 import android.annotation.SuppressLint; 11 import android.annotation.SuppressLint;
10 import android.content.Context; 12 import android.content.Context;
11 import android.content.res.ColorStateList; 13 import android.content.res.ColorStateList;
12 import android.content.res.Configuration; 14 import android.content.res.Configuration;
13 import android.content.res.Resources; 15 import android.content.res.Resources;
14 import android.graphics.Bitmap; 16 import android.graphics.Bitmap;
15 import android.graphics.drawable.BitmapDrawable; 17 import android.graphics.drawable.BitmapDrawable;
16 import android.graphics.drawable.ColorDrawable; 18 import android.graphics.drawable.ColorDrawable;
17 import android.text.TextUtils; 19 import android.text.TextUtils;
(...skipping 26 matching lines...) Expand all
44 import org.chromium.chrome.browser.omnibox.LocationBarLayout; 46 import org.chromium.chrome.browser.omnibox.LocationBarLayout;
45 import org.chromium.chrome.browser.omnibox.UrlBar; 47 import org.chromium.chrome.browser.omnibox.UrlBar;
46 import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; 48 import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener;
47 import org.chromium.chrome.browser.profiles.Profile; 49 import org.chromium.chrome.browser.profiles.Profile;
48 import org.chromium.chrome.browser.ssl.ConnectionSecurityLevel; 50 import org.chromium.chrome.browser.ssl.ConnectionSecurityLevel;
49 import org.chromium.chrome.browser.tab.ChromeTab; 51 import org.chromium.chrome.browser.tab.ChromeTab;
50 import org.chromium.chrome.browser.widget.TintedImageButton; 52 import org.chromium.chrome.browser.widget.TintedImageButton;
51 import org.chromium.components.dom_distiller.core.DomDistillerService; 53 import org.chromium.components.dom_distiller.core.DomDistillerService;
52 import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; 54 import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
53 import org.chromium.ui.base.WindowAndroid; 55 import org.chromium.ui.base.WindowAndroid;
56 import org.chromium.ui.interpolators.BakedBezierInterpolator;
54 57
55 /** 58 /**
56 * The Toolbar layout to be used for a custom tab. This is used for both phone a nd tablet UIs. 59 * The Toolbar layout to be used for a custom tab. This is used for both phone a nd tablet UIs.
57 */ 60 */
58 public class CustomTabToolbar extends ToolbarLayout implements LocationBar { 61 public class CustomTabToolbar extends ToolbarLayout implements LocationBar {
62 private static final int CUSTOM_TAB_TOOLBAR_SLIDE_DURATION_MS = 200;
63 private static final int CUSTOM_TAB_TOOLBAR_FADE_DURATION_MS = 150;
59 private View mUrlInfoContainer; 64 private View mUrlInfoContainer;
60 private UrlBar mUrlBar; 65 private UrlBar mUrlBar;
61 private TextView mTitleBar; 66 private TextView mTitleBar;
62 private ImageView mSecurityButton; 67 private ImageView mSecurityButton;
63 private ImageButton mCustomActionButton; 68 private ImageButton mCustomActionButton;
64 private int mSecurityIconType; 69 private int mSecurityIconType;
65 private boolean mUseDarkColors; 70 private boolean mUseDarkColors;
66 private TintedImageButton mCloseButton; 71 private TintedImageButton mCloseButton;
67 private Animator mSecurityButtonShowAnimator; 72
73 private AnimatorSet mSecurityButtonShowAnimator;
68 private boolean mBackgroundColorSet; 74 private boolean mBackgroundColorSet;
69 75
70 /** 76 /**
71 * Constructor for getting this class inflated from an xml layout file. 77 * Constructor for getting this class inflated from an xml layout file.
72 */ 78 */
73 public CustomTabToolbar(Context context, AttributeSet attrs) { 79 public CustomTabToolbar(Context context, AttributeSet attrs) {
74 super(context, attrs); 80 super(context, attrs);
75 } 81 }
76 82
77 @Override 83 @Override
78 protected void onFinishInflate() { 84 protected void onFinishInflate() {
79 super.onFinishInflate(); 85 super.onFinishInflate();
80 setBackground(new ColorDrawable(getResources().getColor(R.color.default_ primary_color))); 86 setBackground(new ColorDrawable(getResources().getColor(R.color.default_ primary_color)));
81 mUrlBar = (UrlBar) findViewById(R.id.url_bar); 87 mUrlBar = (UrlBar) findViewById(R.id.url_bar);
82 mUrlBar.setHint(""); 88 mUrlBar.setHint("");
83 mUrlBar.setDelegate(this); 89 mUrlBar.setDelegate(this);
84 mUrlBar.setEnabled(false); 90 mUrlBar.setEnabled(false);
85 mUrlBar.setAllowFocus(false); 91 mUrlBar.setAllowFocus(false);
86 mTitleBar = (TextView) findViewById(R.id.title_bar); 92 mTitleBar = (TextView) findViewById(R.id.title_bar);
87 mUrlInfoContainer = findViewById(R.id.url_info_container); 93 mUrlInfoContainer = findViewById(R.id.url_info_container);
88 mSecurityButton = (ImageButton) findViewById(R.id.security_button); 94 mSecurityButton = (ImageButton) findViewById(R.id.security_button);
89 mSecurityIconType = ConnectionSecurityLevel.NONE; 95 mSecurityIconType = ConnectionSecurityLevel.NONE;
90 mCustomActionButton = (ImageButton) findViewById(R.id.action_button); 96 mCustomActionButton = (ImageButton) findViewById(R.id.action_button);
91 mCloseButton = (TintedImageButton) findViewById(R.id.close_button); 97 mCloseButton = (TintedImageButton) findViewById(R.id.close_button);
92 mSecurityButtonShowAnimator = ObjectAnimator.ofFloat(mSecurityButton, AL PHA, 1); 98 populateToolbarAnimations();
93 mSecurityButtonShowAnimator 99 }
94 .setDuration(ToolbarPhone.URL_FOCUS_CHANGE_ANIMATION_DURATION_MS ); 100
101 private void populateToolbarAnimations() {
102 mSecurityButtonShowAnimator = new AnimatorSet();
103 int securityIconButtonWidth =
104 getResources().getDimensionPixelSize(R.dimen.location_bar_icon_w idth);
105 Animator urlInfoContainerTranslateAnimator =
106 ObjectAnimator.ofFloat(mUrlInfoContainer, TRANSLATION_X, securit yIconButtonWidth);
107 urlInfoContainerTranslateAnimator.setInterpolator(BakedBezierInterpolato r.TRANSFORM_CURVE);
108 urlInfoContainerTranslateAnimator.setDuration(CUSTOM_TAB_TOOLBAR_SLIDE_D URATION_MS);
109
110 Animator securityButtonAlphaAnimator = ObjectAnimator.ofFloat(mSecurityB utton, ALPHA, 1);
111 securityButtonAlphaAnimator.setInterpolator(BakedBezierInterpolator.FADE _IN_CURVE);
112 securityButtonAlphaAnimator.setDuration(CUSTOM_TAB_TOOLBAR_FADE_DURATION _MS);
113 securityButtonAlphaAnimator.addListener(new AnimatorListenerAdapter() {
114 @Override
115 public void onAnimationStart(Animator animation) {
116 mSecurityButton.setVisibility(VISIBLE);
117 mUrlInfoContainer.setTranslationX(0);
118 }
119 });
120
121 mSecurityButtonShowAnimator.playSequentially(
122 urlInfoContainerTranslateAnimator, securityButtonAlphaAnimator);
95 } 123 }
96 124
97 @Override 125 @Override
98 protected int getToolbarHeightWithoutShadowResId() { 126 protected int getToolbarHeightWithoutShadowResId() {
99 return R.dimen.custom_tabs_control_container_height; 127 return R.dimen.custom_tabs_control_container_height;
100 } 128 }
101 129
102 @Override 130 @Override
103 public void initialize(ToolbarDataProvider toolbarDataProvider, 131 public void initialize(ToolbarDataProvider toolbarDataProvider,
104 ToolbarTabController tabController, AppMenuButtonHelper appMenuButto nHelper) { 132 ToolbarTabController tabController, AppMenuButtonHelper appMenuButto nHelper) {
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 securityLevel, !shouldEmphasizeHttpsScheme())); 365 securityLevel, !shouldEmphasizeHttpsScheme()));
338 366
339 if (mSecurityIconType == securityLevel) return; 367 if (mSecurityIconType == securityLevel) return;
340 mSecurityIconType = securityLevel; 368 mSecurityIconType = securityLevel;
341 369
342 if (securityLevel == ConnectionSecurityLevel.NONE) { 370 if (securityLevel == ConnectionSecurityLevel.NONE) {
343 // TODO(yusufo): Add an animator for hiding as well. 371 // TODO(yusufo): Add an animator for hiding as well.
344 mSecurityButton.setVisibility(GONE); 372 mSecurityButton.setVisibility(GONE);
345 } else { 373 } else {
346 if (mSecurityButtonShowAnimator.isRunning()) mSecurityButtonShowAnim ator.cancel(); 374 if (mSecurityButtonShowAnimator.isRunning()) mSecurityButtonShowAnim ator.cancel();
347 mSecurityButton.setVisibility(VISIBLE);
348 mSecurityButtonShowAnimator.start(); 375 mSecurityButtonShowAnimator.start();
349 mUrlBar.deEmphasizeUrl(); 376 mUrlBar.deEmphasizeUrl();
350 } 377 }
351 mUrlBar.emphasizeUrl(); 378 mUrlBar.emphasizeUrl();
352 mUrlBar.invalidate(); 379 mUrlBar.invalidate();
353 } 380 }
354 381
355 /** 382 /**
356 * For extending classes to override and carry out the changes related with the primary color 383 * For extending classes to override and carry out the changes related with the primary color
357 * for the current tab changing. 384 * for the current tab changing.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 public void onTabLoadingNTP(NewTabPage ntp) { 529 public void onTabLoadingNTP(NewTabPage ntp) {
503 } 530 }
504 531
505 @Override 532 @Override
506 public void setAutocompleteProfile(Profile profile) { 533 public void setAutocompleteProfile(Profile profile) {
507 } 534 }
508 535
509 @Override 536 @Override
510 public void backKeyPressed() { } 537 public void backKeyPressed() { }
511 } 538 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698