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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java

Issue 1874953003: Progress bar color is based on toolbar color (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@progressbar-improvements-final
Patch Set: get color from ColorDrawable Created 4 years, 8 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/util/ColorUtils.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java
index 8e60258891a2e383a85c05779e181b971bf265f0..a2004c8e1a8de477c6966cf05cb66be063b02810 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/ToolbarProgressBar.java
@@ -7,14 +7,17 @@ package org.chromium.chrome.browser.widget;
import android.animation.TimeAnimator;
import android.animation.TimeAnimator.TimeListener;
import android.content.Context;
+import android.graphics.Color;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.FrameLayout.LayoutParams;
+import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.CommandLine;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.util.ColorUtils;
import org.chromium.components.variations.VariationsAssociatedData;
@@ -54,6 +57,10 @@ public class ToolbarProgressBar extends ClipDrawableProgressBar {
// The amount of time in ms that the progress bar has to be stopped before the indeterminate
// animation starts.
private static final long ANIMATION_START_THRESHOLD = 1000;
+ private static final float THEMED_BACKGROUND_ALPHA = 0.2f;
+ private static final float THEMED_DARKEN_FRACTION = 0.6f;
+ private static final float THEMED_COLOR_ALPHA = 0.4f;
+ private static final float MIN_COLOR_CONTRAST = 3.0f;
private static final long PROGRESS_FRAME_TIME_CAP_MS = 50;
private long mAlphaAnimationDurationMs = 140;
@@ -179,7 +186,8 @@ public class ToolbarProgressBar extends ClipDrawableProgressBar {
animationParams.topMargin = mMarginTop;
mAnimatingView = new ToolbarProgressBarAnimatingView(getContext(), animationParams);
- mAnimatingView.setColor(ColorUtils.getProgressBarAnimationColor(getForegroundColor()));
+ mAnimatingView.setColor(
+ ColorUtils.getColorWithOverlay(getForegroundColor(), Color.WHITE, 0.4f));
UiUtils.insertAfter(mControlContainer, mAnimatingView, this);
} else if (TextUtils.equals(animation, "fast-start")) {
mAnimationLogic = new ProgressAnimationFastStart();
@@ -299,12 +307,41 @@ public class ToolbarProgressBar extends ClipDrawableProgressBar {
if (mAnimatingView != null) mAnimatingView.setVisibility(visibility);
}
+ /**
+ * Color the progress bar based on the toolbar theme color.
+ * @param color The Android color the toolbar is using.
+ */
+ public void setThemeColor(int color, boolean isIncognito) {
+ int animationColor;
+ int foregroundColor;
+
+ int foregroundWhite = ApiCompatibilityUtils.getColor(getResources(),
+ R.color.progress_bar_foreground_white);
+
+ if (!ColorUtils.shoudUseLightForegroundOnBackground(color) && !isIncognito) {
+ // Light theme.
+ foregroundColor = ColorUtils.findDarkerColorWithMinContrast(color, MIN_COLOR_CONTRAST);
+ animationColor = ColorUtils.getColorWithOverlay(foregroundColor, foregroundWhite,
+ THEMED_COLOR_ALPHA);
+ } else {
+ // Dark theme.
+ foregroundColor = foregroundWhite;
+ animationColor = ColorUtils.getColorWithOverlay(color, foregroundWhite,
+ 1.0f - THEMED_COLOR_ALPHA);
+ }
+
+ setForegroundColor(foregroundColor);
+ setBackgroundColor(
+ ColorUtils.getColorWithOverlay(foregroundWhite, color, THEMED_BACKGROUND_ALPHA));
+
+ if (mAnimatingView != null) mAnimatingView.setColor(animationColor);
+ }
+
@Override
public void setForegroundColor(int color) {
super.setForegroundColor(color);
- // Set the animation color to a faded version of the input color.
if (mAnimatingView != null) {
- mAnimatingView.setColor(ColorUtils.getProgressBarAnimationColor(color));
+ mAnimatingView.setColor(ColorUtils.getColorWithOverlay(color, Color.WHITE, 0.4f));
}
}
}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/util/ColorUtils.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698