diff options
Diffstat (limited to 'src/com/android/launcher3/dynamicui/ExtractedColors.java')
-rw-r--r-- | src/com/android/launcher3/dynamicui/ExtractedColors.java | 86 |
1 files changed, 57 insertions, 29 deletions
diff --git a/src/com/android/launcher3/dynamicui/ExtractedColors.java b/src/com/android/launcher3/dynamicui/ExtractedColors.java index 4d17ff764..e545288a0 100644 --- a/src/com/android/launcher3/dynamicui/ExtractedColors.java +++ b/src/com/android/launcher3/dynamicui/ExtractedColors.java @@ -18,6 +18,7 @@ package com.android.launcher3.dynamicui; import android.content.Context; import android.graphics.Color; +import android.support.v4.graphics.ColorUtils; import android.support.v7.graphics.Palette; import android.util.Log; @@ -35,26 +36,30 @@ public class ExtractedColors { // These color profile indices should NOT be changed, since they are used when saving and // loading extracted colors. New colors should always be added at the end. - public static final int DEFAULT_INDEX = 0; - public static final int VIBRANT_INDEX = 1; - public static final int VIBRANT_DARK_INDEX = 2; - public static final int VIBRANT_LIGHT_INDEX = 3; - public static final int MUTED_INDEX = 4; - public static final int MUTED_DARK_INDEX = 5; - public static final int MUTED_LIGHT_INDEX = 6; - - public static final int NUM_COLOR_PROFILES = 7; + public static final int VERSION_INDEX = 0; + public static final int HOTSEAT_INDEX = 1; + // public static final int VIBRANT_INDEX = 2; + // public static final int VIBRANT_DARK_INDEX = 3; + // public static final int VIBRANT_LIGHT_INDEX = 4; + // public static final int MUTED_INDEX = 5; + // public static final int MUTED_DARK_INDEX = 6; + // public static final int MUTED_LIGHT_INDEX = 7; + + public static final int NUM_COLOR_PROFILES = 1; + private static final int VERSION = 1; private static final String COLOR_SEPARATOR = ","; private int[] mColors; public ExtractedColors() { - mColors = new int[NUM_COLOR_PROFILES]; + // The first entry is reserved for the version number. + mColors = new int[NUM_COLOR_PROFILES + 1]; + mColors[VERSION_INDEX] = VERSION; } public void setColorAtIndex(int index, int color) { - if (index >= 0 && index < mColors.length) { + if (index > VERSION_INDEX && index < mColors.length) { mColors[index] = color; } else { Log.e(TAG, "Attempted to set a color at an invalid index " + index); @@ -89,17 +94,21 @@ public class ExtractedColors { */ public void load(Context context) { String encodedString = Utilities.getPrefs(context).getString( - ExtractionUtils.EXTRACTED_COLORS_PREFERENCE_KEY, DEFAULT_COLOR + ""); + ExtractionUtils.EXTRACTED_COLORS_PREFERENCE_KEY, VERSION + ""); decodeFromString(encodedString); + + if (mColors[VERSION_INDEX] != VERSION) { + ExtractionUtils.startColorExtractionService(context); + } } /** @param index must be one of the index values defined at the top of this class. */ - public int getColor(int index) { - if (index >= 0 && index < mColors.length) { + public int getColor(int index, int defaultColor) { + if (index > VERSION_INDEX && index < mColors.length) { return mColors[index]; } - return DEFAULT_COLOR; + return defaultColor; } /** @@ -112,20 +121,39 @@ public class ExtractedColors { setColorAtIndex(i, ExtractedColors.DEFAULT_COLOR); } } else { - setColorAtIndex(ExtractedColors.DEFAULT_INDEX, - ExtractedColors.DEFAULT_COLOR); - setColorAtIndex(ExtractedColors.VIBRANT_INDEX, - palette.getVibrantColor(ExtractedColors.DEFAULT_COLOR)); - setColorAtIndex(ExtractedColors.VIBRANT_DARK_INDEX, - palette.getDarkVibrantColor(ExtractedColors.DEFAULT_DARK)); - setColorAtIndex(ExtractedColors.VIBRANT_LIGHT_INDEX, - palette.getLightVibrantColor(ExtractedColors.DEFAULT_LIGHT)); - setColorAtIndex(ExtractedColors.MUTED_INDEX, - palette.getMutedColor(ExtractedColors.DEFAULT_COLOR)); - setColorAtIndex(ExtractedColors.MUTED_DARK_INDEX, - palette.getDarkMutedColor(ExtractedColors.DEFAULT_DARK)); - setColorAtIndex(ExtractedColors.MUTED_LIGHT_INDEX, - palette.getLightVibrantColor(ExtractedColors.DEFAULT_LIGHT)); + // We currently don't use any of the colors defined by the Palette API, + // but this is how we would add them if we ever need them. + + // setColorAtIndex(ExtractedColors.VIBRANT_INDEX, + // palette.getVibrantColor(ExtractedColors.DEFAULT_COLOR)); + // setColorAtIndex(ExtractedColors.VIBRANT_DARK_INDEX, + // palette.getDarkVibrantColor(ExtractedColors.DEFAULT_DARK)); + // setColorAtIndex(ExtractedColors.VIBRANT_LIGHT_INDEX, + // palette.getLightVibrantColor(ExtractedColors.DEFAULT_LIGHT)); + // setColorAtIndex(ExtractedColors.MUTED_INDEX, + // palette.getMutedColor(DEFAULT_COLOR)); + // setColorAtIndex(ExtractedColors.MUTED_DARK_INDEX, + // palette.getDarkMutedColor(ExtractedColors.DEFAULT_DARK)); + // setColorAtIndex(ExtractedColors.MUTED_LIGHT_INDEX, + // palette.getLightVibrantColor(ExtractedColors.DEFAULT_LIGHT)); + } + } + + /** + * The hotseat's color is defined as follows: + * - 12% black for super light wallpaper + * - 18% white for super dark + * - 25% white otherwise + */ + public void updateHotseatPalette(Palette hotseatPalette) { + int hotseatColor; + if (hotseatPalette != null && ExtractionUtils.isSuperLight(hotseatPalette)) { + hotseatColor = ColorUtils.setAlphaComponent(Color.BLACK, (int) (0.12f * 255)); + } else if (hotseatPalette != null && ExtractionUtils.isSuperDark(hotseatPalette)) { + hotseatColor = ColorUtils.setAlphaComponent(Color.WHITE, (int) (0.18f * 255)); + } else { + hotseatColor = ColorUtils.setAlphaComponent(Color.WHITE, (int) (0.25f * 255)); } + setColorAtIndex(HOTSEAT_INDEX, hotseatColor); } } |