Merge changes Ic4c5cd96,I2cc2417f into udc-dev
* changes:
Turn on flag for download app ux V3
Improve color, contrast, and dimensions to match new spec for download icon
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 924e800..0c653cd 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -272,7 +272,7 @@
+ " to have better visuals");
public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V3 = getDebugFlag(270395186,
- "ENABLE_DOWNLOAD_APP_UX_V3", DISABLED, "Updates the download app UX"
+ "ENABLE_DOWNLOAD_APP_UX_V3", ENABLED, "Updates the download app UX"
+ " to have better visuals, improve contrast, and color");
public static final BooleanFlag FORCE_PERSISTENT_TASKBAR = getDebugFlag(270395077,
diff --git a/src/com/android/launcher3/graphics/PreloadIconDrawable.java b/src/com/android/launcher3/graphics/PreloadIconDrawable.java
index 0fe79e7..b569fc3 100644
--- a/src/com/android/launcher3/graphics/PreloadIconDrawable.java
+++ b/src/com/android/launcher3/graphics/PreloadIconDrawable.java
@@ -20,6 +20,7 @@
import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V3;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -34,6 +35,8 @@
import android.graphics.Rect;
import android.util.Property;
+import androidx.core.graphics.ColorUtils;
+
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.AnimatedFloat;
@@ -73,12 +76,11 @@
// Duration = COMPLETE_ANIM_FRACTION * DURATION_SCALE
private static final float COMPLETE_ANIM_FRACTION = 1f;
- private static final float SMALL_SCALE = 0.7f;
+ private static final float SMALL_SCALE = ENABLE_DOWNLOAD_APP_UX_V3.get() ? 0.8f : 0.7f;
private static final float PROGRESS_STROKE_SCALE = ENABLE_DOWNLOAD_APP_UX_V2.get()
- ? 0.0655f
+ ? 0.06666667f
: 0.075f;
- private static final float PROGRESS_BOUNDS_SCALE = 0.075f;
-
+ private static final float PROGRESS_BOUNDS_SCALE = 0.08f;
private static final int PRELOAD_ACCENT_COLOR_INDEX = 0;
private static final int PRELOAD_BACKGROUND_COLOR_INDEX = 1;
@@ -97,6 +99,11 @@
private final int mIndicatorColor;
private final int mSystemAccentColor;
private final int mSystemBackgroundColor;
+
+ private int mProgressColor;
+ private int mTrackColor;
+ private int mPlateColor;
+
private final boolean mIsDarkMode;
private float mTrackLength;
@@ -137,8 +144,35 @@
mProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
mProgressPaint.setStrokeCap(Paint.Cap.ROUND);
+ if (ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+ mProgressPaint.setAlpha(MAX_PAINT_ALPHA);
+ }
mIndicatorColor = indicatorColor;
+ // This is the color
+ int primaryIconColor = mItem.bitmap.color;
+
+ // Progress color
+ float[] m3HCT = new float[3];
+ ColorUtils.colorToM3HCT(primaryIconColor, m3HCT);
+ mProgressColor = ColorUtils.M3HCTtoColor(
+ m3HCT[0],
+ m3HCT[1],
+ isDarkMode ? Math.max(m3HCT[2], 55) : Math.min(m3HCT[2], 40));
+
+ // Track color
+ mTrackColor = ColorUtils.M3HCTtoColor(
+ m3HCT[0],
+ 16,
+ isDarkMode ? 30 : 90
+ );
+ // Plate color
+ mPlateColor = ColorUtils.M3HCTtoColor(
+ m3HCT[0],
+ isDarkMode ? 36 : 24,
+ isDarkMode ? (isThemed() ? 10 : 20) : 80
+ );
+
mSystemAccentColor = preloadColors[PRELOAD_ACCENT_COLOR_INDEX];
mSystemBackgroundColor = preloadColors[PRELOAD_BACKGROUND_COLOR_INDEX];
mIsDarkMode = isDarkMode;
@@ -156,10 +190,7 @@
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
-
- float progressWidth = bounds.width() * (ENABLE_DOWNLOAD_APP_UX_V2.get()
- ? PROGRESS_BOUNDS_SCALE
- : PROGRESS_STROKE_SCALE);
+ float progressWidth = bounds.width() * PROGRESS_BOUNDS_SCALE;
mTmpMatrix.setScale(
(bounds.width() - 2 * progressWidth) / DEFAULT_PATH_SIZE,
(bounds.height() - 2 * progressWidth) / DEFAULT_PATH_SIZE);
@@ -181,20 +212,32 @@
return;
}
- if (!ENABLE_DOWNLOAD_APP_UX_V2.get() && mInternalStateProgress > 0) {
+ if (mInternalStateProgress > 0
+ && (ENABLE_DOWNLOAD_APP_UX_V3.get() || !ENABLE_DOWNLOAD_APP_UX_V2.get())) {
// Draw background.
- mProgressPaint.setStyle(Paint.Style.FILL_AND_STROKE);
- mProgressPaint.setColor(mSystemBackgroundColor);
+ mProgressPaint.setStyle(ENABLE_DOWNLOAD_APP_UX_V3.get()
+ ? Paint.Style.FILL
+ : Paint.Style.FILL_AND_STROKE);
+ mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get()
+ ? mPlateColor
+ : mSystemBackgroundColor);
canvas.drawPath(mScaledTrackPath, mProgressPaint);
}
if (!ENABLE_DOWNLOAD_APP_UX_V2.get() || mInternalStateProgress > 0) {
// Draw track and progress.
mProgressPaint.setStyle(Paint.Style.STROKE);
- mProgressPaint.setColor(mSystemAccentColor);
- mProgressPaint.setAlpha(TRACK_ALPHA);
+ mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get()
+ ? mTrackColor
+ : mSystemAccentColor);
+ if (!ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+ mProgressPaint.setAlpha(TRACK_ALPHA);
+ }
canvas.drawPath(mScaledTrackPath, mProgressPaint);
mProgressPaint.setAlpha(MAX_PAINT_ALPHA);
+ if (ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+ mProgressPaint.setColor(mProgressColor);
+ }
canvas.drawPath(mScaledProgressPath, mProgressPaint);
}
@@ -234,6 +277,10 @@
public void maybePerformFinishedAnimation(
PreloadIconDrawable oldIcon, Runnable onFinishCallback) {
+ mProgressColor = oldIcon.mProgressColor;
+ mTrackColor = oldIcon.mTrackColor;
+ mPlateColor = oldIcon.mPlateColor;
+
if (oldIcon.mInternalStateProgress >= 1) {
mInternalStateProgress = oldIcon.mInternalStateProgress;
}