From 1f3f07d47c29cba3b70bcd15ebb65a077f55a558 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 10 Feb 2017 16:52:16 -0800 Subject: [PATCH] Simplifying some launcher themes > Replacing some colors with theme attributes > Simplifying styles definition by removing unnecessary inheritance and inlining some definitions Change-Id: Ifa167515cae6a7fd3720f1a52ff9ce11abb4495f --- AndroidManifest.xml | 3 +- res/drawable/all_apps_divider.xml | 2 +- res/drawable/all_apps_search_hint.xml | 2 +- res/drawable/bg_pill_focused.xml | 5 +- res/drawable/deep_shortcuts_drag_handle.xml | 5 +- res/drawable/ic_setting.xml | 2 +- res/drawable/ic_wallpaper.xml | 2 +- res/drawable/ic_widget.xml | 2 +- res/drawable/quantum_panel.xml | 22 ---- res/drawable/quantum_panel_shape.xml | 22 ---- res/layout/all_apps.xml | 9 +- res/layout/all_apps_button.xml | 4 +- res/layout/all_apps_empty_search.xml | 3 +- res/layout/all_apps_icon.xml | 9 +- res/layout/app_icon.xml | 4 +- res/layout/deep_shortcut.xml | 24 +++-- res/layout/folder_application.xml | 9 +- res/layout/folder_icon.xml | 3 +- res/layout/notification_main.xml | 12 ++- res/layout/qsb_default_view.xml | 6 +- res/layout/user_folder.xml | 10 +- res/layout/user_folder_icon_normalized.xml | 10 +- res/values-sw720dp/styles.xml | 1 + res/values-v26/styles.xml | 7 ++ res/values/colors.xml | 12 +-- res/values/dimens.xml | 3 - res/values/styles.xml | 101 +++++------------- .../BaseRecyclerViewFastScrollBar.java | 3 +- src/com/android/launcher3/BubbleTextView.java | 4 +- src/com/android/launcher3/Hotseat.java | 4 +- src/com/android/launcher3/IconCache.java | 10 +- src/com/android/launcher3/InfoDropTarget.java | 3 +- .../launcher3/PendingAppWidgetHostView.java | 3 +- src/com/android/launcher3/Utilities.java | 12 --- .../allapps/AllAppsContainerView.java | 4 - .../allapps/AllAppsTransitionController.java | 4 +- .../launcher3/folder/FolderPagedView.java | 3 +- .../launcher3/graphics/DrawableFactory.java | 2 +- .../launcher3/graphics/IconPalette.java | 7 +- .../graphics/PreloadIconDrawable.java | 8 +- .../pageindicators/CaretDrawable.java | 6 +- .../pageindicators/PageIndicatorDots.java | 5 +- src/com/android/launcher3/util/Themes.java | 52 +++++++++ 43 files changed, 195 insertions(+), 229 deletions(-) delete mode 100644 res/drawable/quantum_panel.xml delete mode 100644 res/drawable/quantum_panel_shape.xml create mode 100644 src/com/android/launcher3/util/Themes.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6c5990d1b2..418b3a373a 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -56,6 +56,7 @@ android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher_home" android:label="@string/derived_app_name" + android:theme="@style/LauncherTheme" android:largeHeap="@bool/config_largeHeap" android:restoreAnyVersion="true" android:supportsRtl="true" > @@ -69,7 +70,6 @@ android:launchMode="singleTask" android:clearTaskOnLaunch="true" android:stateNotNeeded="true" - android:theme="@style/LauncherTheme" android:windowSoftInputMode="adjustPan" android:screenOrientation="nosensor" android:configChanges="keyboard|keyboardHidden|navigation" @@ -90,6 +90,7 @@ diff --git a/res/drawable/all_apps_divider.xml b/res/drawable/all_apps_divider.xml index 3fe5295566..4bd274dd4b 100644 --- a/res/drawable/all_apps_divider.xml +++ b/res/drawable/all_apps_divider.xml @@ -15,6 +15,6 @@ --> - + \ No newline at end of file diff --git a/res/drawable/all_apps_search_hint.xml b/res/drawable/all_apps_search_hint.xml index 36a0f03738..b2ff7a428e 100644 --- a/res/drawable/all_apps_search_hint.xml +++ b/res/drawable/all_apps_search_hint.xml @@ -15,6 +15,6 @@ limitations under the License. --> - + \ No newline at end of file diff --git a/res/drawable/bg_pill_focused.xml b/res/drawable/bg_pill_focused.xml index 37afad0374..54075d92c9 100644 --- a/res/drawable/bg_pill_focused.xml +++ b/res/drawable/bg_pill_focused.xml @@ -16,9 +16,8 @@ - - + + diff --git a/res/drawable/deep_shortcuts_drag_handle.xml b/res/drawable/deep_shortcuts_drag_handle.xml index 99d2b07a5f..82e844d2d9 100644 --- a/res/drawable/deep_shortcuts_drag_handle.xml +++ b/res/drawable/deep_shortcuts_drag_handle.xml @@ -18,9 +18,10 @@ android:width="@dimen/deep_shortcut_drag_handle_size" android:height="@dimen/deep_shortcut_drag_handle_size" android:viewportWidth="24.0" - android:viewportHeight="24.0"> + android:viewportHeight="24.0" + android:tint="?android:attr/textColorHint" > + android:fillColor="@android:color/white" /> \ No newline at end of file diff --git a/res/drawable/ic_setting.xml b/res/drawable/ic_setting.xml index 8a50c0c789..e89c158c8b 100644 --- a/res/drawable/ic_setting.xml +++ b/res/drawable/ic_setting.xml @@ -19,6 +19,6 @@ Copyright (C) 2016 The Android Open Source Project android:viewportWidth="48.0" android:viewportHeight="48.0"> diff --git a/res/drawable/ic_wallpaper.xml b/res/drawable/ic_wallpaper.xml index 7af4b2afc5..b7fcfbf55b 100644 --- a/res/drawable/ic_wallpaper.xml +++ b/res/drawable/ic_wallpaper.xml @@ -19,6 +19,6 @@ Copyright (C) 2016 The Android Open Source Project android:viewportWidth="48.0" android:viewportHeight="48.0"> diff --git a/res/drawable/ic_widget.xml b/res/drawable/ic_widget.xml index 3e7bd7b51d..97706e36d7 100644 --- a/res/drawable/ic_widget.xml +++ b/res/drawable/ic_widget.xml @@ -19,6 +19,6 @@ Copyright (C) 2016 The Android Open Source Project android:viewportWidth="48.0" android:viewportHeight="48.0"> diff --git a/res/drawable/quantum_panel.xml b/res/drawable/quantum_panel.xml deleted file mode 100644 index fda1003708..0000000000 --- a/res/drawable/quantum_panel.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/res/drawable/quantum_panel_shape.xml b/res/drawable/quantum_panel_shape.xml deleted file mode 100644 index 1083615768..0000000000 --- a/res/drawable/quantum_panel_shape.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml index 5f5b38b469..d6bdac2f00 100644 --- a/res/layout/all_apps.xml +++ b/res/layout/all_apps.xml @@ -22,7 +22,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - launcher:revealBackground="@drawable/quantum_panel_shape"> + launcher:revealBackground="@drawable/round_rect_primary"> + android:paddingEnd="@dimen/container_fastscroll_thumb_max_width" /> @@ -95,11 +94,11 @@ \ No newline at end of file diff --git a/res/layout/all_apps_button.xml b/res/layout/all_apps_button.xml index 68cc10932c..4bc780a708 100644 --- a/res/layout/all_apps_button.xml +++ b/res/layout/all_apps_button.xml @@ -14,6 +14,4 @@ limitations under the License. --> - + diff --git a/res/layout/all_apps_empty_search.xml b/res/layout/all_apps_empty_search.xml index e1635d638f..463adac0c6 100644 --- a/res/layout/all_apps_empty_search.xml +++ b/res/layout/all_apps_empty_search.xml @@ -25,7 +25,6 @@ android:paddingRight="16dp" android:fontFamily="sans-serif-medium" android:textSize="14sp" - android:textColor="#212121" - android:alpha="0.56" + android:textColor="?android:attr/textColorTertiary" android:focusable="false" /> diff --git a/res/layout/all_apps_icon.xml b/res/layout/all_apps_icon.xml index 3d4bef70cc..1e83041d5d 100644 --- a/res/layout/all_apps_icon.xml +++ b/res/layout/all_apps_icon.xml @@ -16,12 +16,13 @@ + launcher:centerVertically="true" + android:paddingLeft="4dp" + android:paddingRight="4dp" + android:drawablePadding="@dimen/dynamic_grid_icon_drawable_padding" /> diff --git a/res/layout/app_icon.xml b/res/layout/app_icon.xml index 831cee5b00..fa6eb89108 100644 --- a/res/layout/app_icon.xml +++ b/res/layout/app_icon.xml @@ -14,6 +14,4 @@ limitations under the License. --> - + diff --git a/res/layout/deep_shortcut.xml b/res/layout/deep_shortcut.xml index 1f67682b87..6c1d4da91e 100644 --- a/res/layout/deep_shortcut.xml +++ b/res/layout/deep_shortcut.xml @@ -16,18 +16,28 @@ + android:background="@drawable/bg_white_pill" > - + android:background="@drawable/bg_pill_focused" + android:gravity="start|center_vertical" + android:textAlignment="viewStart" + android:paddingStart="@dimen/bg_pill_height" + android:paddingEnd="@dimen/deep_shortcut_padding_end" + android:drawableEnd="@drawable/deep_shortcuts_drag_handle" + android:drawablePadding="@dimen/deep_shortcut_drawable_padding" + android:textSize="14sp" + android:fontFamily="sans-serif" + launcher:layoutHorizontal="true" + launcher:iconDisplay="shortcut_popup" + launcher:iconSizeOverride="@dimen/deep_shortcut_icon_size" + android:elevation="@dimen/deep_shortcuts_elevation" /> - + diff --git a/res/layout/folder_icon.xml b/res/layout/folder_icon.xml index 9eb8c9a674..ccc6b01eac 100644 --- a/res/layout/folder_icon.xml +++ b/res/layout/folder_icon.xml @@ -21,8 +21,9 @@ android:orientation="vertical" android:focusable="true" > diff --git a/res/layout/notification_main.xml b/res/layout/notification_main.xml index efb74b0f7e..84827f1144 100644 --- a/res/layout/notification_main.xml +++ b/res/layout/notification_main.xml @@ -21,7 +21,6 @@ android:layout_height="match_parent" android:orientation="horizontal" android:focusable="true" - android:background="@drawable/bg_pill_focused" android:elevation="@dimen/notification_elevation" > diff --git a/res/layout/qsb_default_view.xml b/res/layout/qsb_default_view.xml index 82bdea5e82..3075f803f1 100644 --- a/res/layout/qsb_default_view.xml +++ b/res/layout/qsb_default_view.xml @@ -23,7 +23,7 @@ android:layout_height="48dp" android:layout_margin="16dp" android:layout_gravity="center_vertical" - android:background="@drawable/quantum_panel_shape" + android:background="@drawable/round_rect_primary" android:elevation="2dp" android:orientation="horizontal"> @@ -35,7 +35,7 @@ android:gravity="center_vertical" android:paddingStart="16dp" android:text="@string/abandoned_search" - android:textColor="@color/quantum_panel_text_color" + android:textColor="?android:attr/textColorSecondary" android:textAppearance="?android:textAppearanceMedium" android:clickable="true" android:background="?android:attr/selectableItemBackground" /> @@ -46,7 +46,7 @@ android:visibility="gone" android:layout_height="match_parent" android:src="@drawable/ic_setting" - android:tint="@color/quantum_panel_text_color" + android:tint="?android:attr/textColorSecondary" android:contentDescription="@string/gadget_setup_text" android:padding="8dp" android:background="?android:attr/selectableItemBackground" /> diff --git a/res/layout/user_folder.xml b/res/layout/user_folder.xml index da2a861d8d..cde654096a 100644 --- a/res/layout/user_folder.xml +++ b/res/layout/user_folder.xml @@ -18,7 +18,7 @@ xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@drawable/quantum_panel" + android:background="@drawable/round_rect_primary" android:elevation="5dp" android:orientation="vertical" > @@ -46,7 +46,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" - android:background="#00000000" + android:background="@android:color/transparent" android:fontFamily="sans-serif-condensed" android:gravity="center_horizontal" android:hint="@string/folder_hint_text" @@ -54,10 +54,10 @@ android:paddingBottom="@dimen/folder_label_padding_bottom" android:paddingTop="@dimen/folder_label_padding_top" android:singleLine="true" - android:textColor="#ff777777" + android:textColor="?android:attr/textColorTertiary" android:includeFontPadding="false" - android:textColorHighlight="#ffCCCCCC" - android:textColorHint="#ff808080" + android:textColorHighlight="?android:attr/colorControlHighlight" + android:textColorHint="?android:attr/textColorHint" android:textSize="@dimen/folder_label_text_size" /> @@ -46,7 +46,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" - android:background="#00000000" + android:background="@android:color/transparent" android:fontFamily="sans-serif-condensed" android:textStyle="bold" android:gravity="center_horizontal" @@ -55,9 +55,9 @@ android:paddingBottom="@dimen/folder_label_padding_bottom" android:paddingTop="@dimen/folder_label_padding_top" android:singleLine="true" - android:textColor="#EE777777" - android:textColorHighlight="#ffCCCCCC" - android:textColorHint="#ff808080" + android:textColor="?android:attr/textColorTertiary" + android:textColorHighlight="?android:attr/colorControlHighlight" + android:textColorHint="?android:attr/textColorHint" android:textSize="@dimen/folder_label_text_size" /> true true true + ?android:attr/textColorSecondary diff --git a/res/values-v26/styles.xml b/res/values-v26/styles.xml index 6877623d69..cb184094d9 100644 --- a/res/values-v26/styles.xml +++ b/res/values-v26/styles.xml @@ -21,4 +21,11 @@ + + + + diff --git a/res/values/colors.xml b/res/values/colors.xml index d166a79250..a02df16e13 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -26,21 +26,11 @@ #80c6c5c5 #FFF - #FFFFFFFF - #FF757575 - #FFDDDDDD - #FF666666 - #FFF5F5F5 + #FF000000 #FFFFFFFF - #1E000000 - #FFFFFFFF - #22000000 - #FFF2F2F2 - #28000000 - #AAF2F2F2 #40FFFFFF #FFF diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 70f5b32c79..f5bede9099 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -120,9 +120,6 @@ 1dp - - 4dp - 6dp diff --git a/res/values/styles.xml b/res/values/styles.xml index 879c7d8d65..8a46e839f0 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -24,11 +24,17 @@ @null true true + #FF757575 - + + - - - - - - - + + + - - - - - - - - - - @@ -133,11 +86,11 @@ 7.5dp 16dp 16dp - #FFFFFFFF + @color/workspace_icon_text_color @dimen/drop_target_text_size true end - #FF000000 + @color/default_shadow_color_no_alpha 0.0 1.0 4.0 diff --git a/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java b/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java index 4fecc3da5f..ba7c3f809c 100644 --- a/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java +++ b/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java @@ -29,6 +29,7 @@ import android.view.ViewConfiguration; import android.widget.TextView; import com.android.launcher3.config.FeatureFlags; +import com.android.launcher3.util.Themes; /** * The track and scrollbar that shows when you scroll the list. @@ -102,7 +103,7 @@ public class BaseRecyclerViewFastScrollBar { mThumbPaint = new Paint(); mThumbPaint.setAntiAlias(true); - mThumbPaint.setColor(Utilities.getColorAccent(rv.getContext())); + mThumbPaint.setColor(Themes.getColorAccent(rv.getContext())); mThumbPaint.setStyle(Paint.Style.FILL); mWidth = mMinWidth = res.getDimensionPixelSize(R.dimen.container_fastscroll_thumb_min_width); diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index bbf2cb8d7a..1a41e08db3 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -113,7 +113,7 @@ public class BubbleTextView extends TextView TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BubbleTextView, defStyle, 0); - mCustomShadowsEnabled = a.getBoolean(R.styleable.BubbleTextView_customShadows, true); + mCustomShadowsEnabled = a.getBoolean(R.styleable.BubbleTextView_customShadows, false); mLayoutHorizontal = a.getBoolean(R.styleable.BubbleTextView_layoutHorizontal, false); mDeferShadowGenerationOnTouch = a.getBoolean(R.styleable.BubbleTextView_deferShadowGeneration, false); @@ -395,7 +395,7 @@ public class BubbleTextView extends TextView } // If text is transparent, don't draw any shadow - if (getCurrentTextColor() == getResources().getColor(android.R.color.transparent)) { + if ((getCurrentTextColor() >> 24) == 0) { getPaint().clearShadowLayer(); super.draw(canvas); return; diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java index 4a8a27278a..47052a77e2 100644 --- a/src/com/android/launcher3/Hotseat.java +++ b/src/com/android/launcher3/Hotseat.java @@ -25,7 +25,6 @@ import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; -import android.support.v4.content.ContextCompat; import android.support.v4.graphics.ColorUtils; import android.util.AttributeSet; import android.view.LayoutInflater; @@ -40,6 +39,7 @@ import com.android.launcher3.dynamicui.ExtractedColors; import com.android.launcher3.logging.UserEventDispatcher; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; +import com.android.launcher3.util.Themes; public class Hotseat extends FrameLayout implements UserEventDispatcher.LogContainerProvider { @@ -70,7 +70,7 @@ public class Hotseat extends FrameLayout mLauncher = Launcher.getLauncher(context); mHasVerticalHotseat = mLauncher.getDeviceProfile().isVerticalBarLayout(); mBackgroundColor = ColorUtils.setAlphaComponent( - ContextCompat.getColor(context, R.color.all_apps_container_color), 0); + Themes.getAttrColor(context, android.R.attr.colorPrimary), 0); mBackground = new ColorDrawable(mBackgroundColor); setBackground(mBackground); } diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java index 6e9820cf48..1f473a26f6 100644 --- a/src/com/android/launcher3/IconCache.java +++ b/src/com/android/launcher3/IconCache.java @@ -27,7 +27,6 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; -import android.content.res.TypedArray; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; @@ -45,7 +44,6 @@ import android.os.UserHandle; import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.Log; -import android.view.ContextThemeWrapper; import com.android.launcher3.compat.LauncherAppsCompat; import com.android.launcher3.compat.UserManagerCompat; @@ -56,6 +54,7 @@ import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.Provider; import com.android.launcher3.util.SQLiteCacheHelper; +import com.android.launcher3.util.Themes; import com.android.launcher3.util.Thunk; import java.util.Collections; @@ -132,10 +131,9 @@ public class IconCache { IconProvider.class, context, R.string.icon_provider_class); mWorkerHandler = new Handler(LauncherModel.getWorkerLooper()); - mActivityBgColor = context.getResources().getColor(R.color.quantum_panel_bg_color); - mPackageBgColor = Utilities.getAttrColor( - new ContextThemeWrapper(context, R.style.WidgetContainerTheme), - android.R.attr.colorPrimary); + mActivityBgColor = Themes.getColorPrimary(context, R.style.LauncherTheme); + mPackageBgColor = Themes.getColorPrimary(context, R.style.WidgetContainerTheme); + mLowResOptions = new BitmapFactory.Options(); // Always prefer RGB_565 config for low res. If the bitmap has transparency, it will // automatically be loaded as ALPHA_8888. diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java index d831a3a030..34adf47a18 100644 --- a/src/com/android/launcher3/InfoDropTarget.java +++ b/src/com/android/launcher3/InfoDropTarget.java @@ -25,6 +25,7 @@ import android.util.Log; import android.widget.Toast; import com.android.launcher3.compat.LauncherAppsCompat; +import com.android.launcher3.util.Themes; public class InfoDropTarget extends UninstallDropTarget { @@ -42,7 +43,7 @@ public class InfoDropTarget extends UninstallDropTarget { protected void onFinishInflate() { super.onFinishInflate(); // Get the hover color - mHoverColor = Utilities.getColorAccent(getContext()); + mHoverColor = Themes.getColorAccent(getContext()); setDrawable(R.drawable.ic_info_launcher); } diff --git a/src/com/android/launcher3/PendingAppWidgetHostView.java b/src/com/android/launcher3/PendingAppWidgetHostView.java index 815fd101b0..43fa4aaf57 100644 --- a/src/com/android/launcher3/PendingAppWidgetHostView.java +++ b/src/com/android/launcher3/PendingAppWidgetHostView.java @@ -35,6 +35,7 @@ import android.view.View.OnClickListener; import com.android.launcher3.IconCache.ItemInfoUpdateReceiver; import com.android.launcher3.graphics.DrawableFactory; import com.android.launcher3.model.PackageItemInfo; +import com.android.launcher3.util.Themes; public class PendingAppWidgetHostView extends LauncherAppWidgetHostView implements OnClickListener, ItemInfoUpdateReceiver { @@ -69,7 +70,7 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView mDisabledForSafeMode = disabledForSafeMode; mPaint = new TextPaint(); - mPaint.setColor(Utilities.getAttrColor(getContext(), android.R.attr.textColorPrimary)); + mPaint.setColor(Themes.getAttrColor(getContext(), android.R.attr.textColorPrimary)); mPaint.setTextSize(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, mLauncher.getDeviceProfile().iconTextSizePx, getResources().getDisplayMetrics())); setBackgroundResource(R.drawable.round_rect_primary); diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index 78774f3b8a..abc53673b9 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -27,7 +27,6 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.res.Resources; -import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Matrix; @@ -608,17 +607,6 @@ public final class Utilities { return c == null || c.isEmpty(); } - public static int getColorAccent(Context context) { - return getAttrColor(context, android.R.attr.colorAccent); - } - - public static int getAttrColor(Context context, int attr) { - TypedArray ta = context.obtainStyledAttributes(new int[]{attr}); - int colorAccent = ta.getColor(0, 0); - ta.recycle(); - return colorAccent; - } - public static void sendCustomAccessibilityEvent(View target, int type, String text) { AccessibilityManager accessibilityManager = (AccessibilityManager) target.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 54d0bbe509..0732004d44 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -464,10 +464,6 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc setLayoutParams(mlp); } else { View navBarBg = findViewById(R.id.nav_bar_bg); - if (Utilities.isAtLeastO()) { - navBarBg.setBackgroundColor(getResources().getColor( - R.color.all_apps_light_navbar_color)); - } ViewGroup.LayoutParams navBarBgLp = navBarBg.getLayoutParams(); navBarBgLp.height = insets.bottom; navBarBg.setLayoutParams(navBarBgLp); diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java index 547ab2b34a..b436fa2631 100644 --- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java +++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java @@ -7,7 +7,6 @@ import android.animation.AnimatorSet; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; import android.graphics.Color; -import android.support.v4.content.ContextCompat; import android.support.v4.graphics.ColorUtils; import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.util.Log; @@ -26,6 +25,7 @@ import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.userevent.nano.LauncherLogProto.Action; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; +import com.android.launcher3.util.Themes; import com.android.launcher3.util.TouchController; /** @@ -102,7 +102,7 @@ public class AllAppsTransitionController implements TouchController, VerticalPul mProgress = 1f; mEvaluator = new ArgbEvaluator(); - mAllAppsBackgroundColor = ContextCompat.getColor(l, R.color.all_apps_container_color); + mAllAppsBackgroundColor = Themes.getAttrColor(l, android.R.attr.colorPrimary); } @Override diff --git a/src/com/android/launcher3/folder/FolderPagedView.java b/src/com/android/launcher3/folder/FolderPagedView.java index 4a2a7350b4..e5a801c209 100644 --- a/src/com/android/launcher3/folder/FolderPagedView.java +++ b/src/com/android/launcher3/folder/FolderPagedView.java @@ -45,6 +45,7 @@ import com.android.launcher3.Workspace.ItemOperator; import com.android.launcher3.dragndrop.DragController; import com.android.launcher3.keyboard.ViewGroupFocusHelper; import com.android.launcher3.pageindicators.PageIndicator; +import com.android.launcher3.util.Themes; import com.android.launcher3.util.Thunk; import java.util.ArrayList; @@ -107,7 +108,7 @@ public class FolderPagedView extends PagedView { mIsRtl = Utilities.isRtl(getResources()); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); - setEdgeGlowColor(getResources().getColor(R.color.folder_edge_effect_color)); + setEdgeGlowColor(Themes.getAttrColor(context, android.R.attr.colorEdgeEffect)); mFocusIndicatorHelper = new ViewGroupFocusHelper(this); } diff --git a/src/com/android/launcher3/graphics/DrawableFactory.java b/src/com/android/launcher3/graphics/DrawableFactory.java index 2493447924..8b207bb0cd 100644 --- a/src/com/android/launcher3/graphics/DrawableFactory.java +++ b/src/com/android/launcher3/graphics/DrawableFactory.java @@ -77,7 +77,7 @@ public class DrawableFactory { if (mPreloadProgressPath == null) { mPreloadProgressPath = getPreloadProgressPath(context); } - return new PreloadIconDrawable(icon, mPreloadProgressPath); + return new PreloadIconDrawable(icon, mPreloadProgressPath, context); } diff --git a/src/com/android/launcher3/graphics/IconPalette.java b/src/com/android/launcher3/graphics/IconPalette.java index 7cb69b3160..23c6a12300 100644 --- a/src/com/android/launcher3/graphics/IconPalette.java +++ b/src/com/android/launcher3/graphics/IconPalette.java @@ -23,6 +23,8 @@ import android.support.v4.graphics.ColorUtils; import android.util.Log; import com.android.launcher3.R; +import com.android.launcher3.Utilities; +import com.android.launcher3.util.Themes; /** * Contains colors based on the dominant color of an icon. @@ -36,7 +38,6 @@ public class IconPalette { private static final float MIN_PRELOAD_COLOR_SATURATION = 0.2f; private static final float MIN_PRELOAD_COLOR_LIGHTNESS = 0.6f; - private static final int DEFAULT_PRELOAD_COLOR = 0xFF009688; public final int dominantColor; public final int backgroundColor; @@ -53,14 +54,14 @@ public class IconPalette { /** * Returns a color suitable for the progress bar color of preload icon. */ - public int getPreloadProgressColor() { + public int getPreloadProgressColor(Context context) { int result = dominantColor; // Make sure that the dominant color has enough saturation to be visible properly. float[] hsv = new float[3]; Color.colorToHSV(result, hsv); if (hsv[1] < MIN_PRELOAD_COLOR_SATURATION) { - result = DEFAULT_PRELOAD_COLOR; + result = Themes.getColorAccent(context); } else { hsv[2] = Math.max(MIN_PRELOAD_COLOR_LIGHTNESS, hsv[2]); result = Color.HSVToColor(hsv); diff --git a/src/com/android/launcher3/graphics/PreloadIconDrawable.java b/src/com/android/launcher3/graphics/PreloadIconDrawable.java index bc07ce1a5c..3514a37c4b 100644 --- a/src/com/android/launcher3/graphics/PreloadIconDrawable.java +++ b/src/com/android/launcher3/graphics/PreloadIconDrawable.java @@ -20,6 +20,7 @@ package com.android.launcher3.graphics; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; +import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; @@ -75,6 +76,8 @@ public class PreloadIconDrawable extends FastBitmapDrawable { private final Matrix mTmpMatrix = new Matrix(); private final PathMeasure mPathMeasure = new PathMeasure(); + private final Context mContext; + // Path in [0, 100] bounds. private final Path mProgressPath; @@ -100,8 +103,9 @@ public class PreloadIconDrawable extends FastBitmapDrawable { /** * @param progressPath fixed path in the bounds [0, 0, 100, 100] representing a progress bar. */ - public PreloadIconDrawable(Bitmap b, Path progressPath) { + public PreloadIconDrawable(Bitmap b, Path progressPath, Context context) { super(b); + mContext = context; mProgressPath = progressPath; mScaledTrackPath = new Path(); mScaledProgressPath = new Path(); @@ -262,7 +266,7 @@ public class PreloadIconDrawable extends FastBitmapDrawable { setIsDisabled(true); } else if (mIndicatorColor == 0) { // Update the indicator color - mIndicatorColor = getIconPalette().getPreloadProgressColor(); + mIndicatorColor = getIconPalette().getPreloadProgressColor(mContext); } if (progress < 1 && progress > 0) { diff --git a/src/com/android/launcher3/pageindicators/CaretDrawable.java b/src/com/android/launcher3/pageindicators/CaretDrawable.java index 4789f69f54..0a00e24e92 100644 --- a/src/com/android/launcher3/pageindicators/CaretDrawable.java +++ b/src/com/android/launcher3/pageindicators/CaretDrawable.java @@ -24,6 +24,7 @@ import android.graphics.Path; import android.graphics.PixelFormat; import com.android.launcher3.R; +import com.android.launcher3.util.Themes; import android.graphics.drawable.Drawable; @@ -45,14 +46,15 @@ public class CaretDrawable extends Drawable { final int strokeWidth = res.getDimensionPixelSize(R.dimen.all_apps_caret_stroke_width); final int shadowSpread = res.getDimensionPixelSize(R.dimen.all_apps_caret_shadow_spread); - mCaretPaint.setColor(res.getColor(R.color.all_apps_caret_color)); + mCaretPaint.setColor(res.getColor(R.color.workspace_icon_text_color)); mCaretPaint.setAntiAlias(true); mCaretPaint.setStrokeWidth(strokeWidth); mCaretPaint.setStyle(Paint.Style.STROKE); mCaretPaint.setStrokeCap(Paint.Cap.SQUARE); mCaretPaint.setStrokeJoin(Paint.Join.MITER); - mShadowPaint.setColor(res.getColor(R.color.all_apps_caret_shadow_color)); + mShadowPaint.setColor(res.getColor(R.color.default_shadow_color_no_alpha)); + mShadowPaint.setAlpha(Themes.getAlpha(context, android.R.attr.spotShadowAlpha)); mShadowPaint.setAntiAlias(true); mShadowPaint.setStrokeWidth(strokeWidth + (shadowSpread * 2)); mShadowPaint.setStyle(Paint.Style.STROKE); diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java index 4f5edc94fd..6276c80c33 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java +++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java @@ -37,6 +37,7 @@ import android.view.animation.OvershootInterpolator; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.util.Themes; /** * {@link PageIndicator} which shows dots per page. The active page is shown with the current @@ -111,8 +112,8 @@ public class PageIndicatorDots extends PageIndicator { mDotRadius = getResources().getDimension(R.dimen.page_indicator_dot_size) / 2; setOutlineProvider(new MyOutlineProver()); - mActiveColor = Utilities.getColorAccent(context); - mInActiveColor = getResources().getColor(R.color.page_indicator_dot_color); + mActiveColor = Themes.getColorAccent(context); + mInActiveColor = Themes.getAttrColor(context, android.R.attr.colorControlHighlight); mIsRtl = Utilities.isRtl(getResources()); } diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java new file mode 100644 index 0000000000..acd589e200 --- /dev/null +++ b/src/com/android/launcher3/util/Themes.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3.util; + +import android.content.Context; +import android.content.res.TypedArray; +import android.view.ContextThemeWrapper; + +/** + * Various utility methods associated with theming. + */ +public class Themes { + + public static int getColorAccent(Context context) { + return getAttrColor(context, android.R.attr.colorAccent); + } + + public static int getColorPrimary(Context context, int theme) { + return getAttrColor(new ContextThemeWrapper(context, theme), android.R.attr.colorPrimary); + } + + public static int getAttrColor(Context context, int attr) { + TypedArray ta = context.obtainStyledAttributes(new int[]{attr}); + int colorAccent = ta.getColor(0, 0); + ta.recycle(); + return colorAccent; + } + + /** + * Returns the alpha corresponding to the theme attribute {@param attr}, in the range [0, 255]. + */ + public static int getAlpha(Context context, int attr) { + TypedArray ta = context.obtainStyledAttributes(new int[]{attr}); + float alpha = ta.getFloat(0, 0); + ta.recycle(); + return (int) (255 * alpha + 0.5f); + } +}