From 2e7af2f0232428b2e5de68210e374a94ae66cbae Mon Sep 17 00:00:00 2001 From: lindatseng Date: Tue, 2 Apr 2019 11:27:25 -0700 Subject: [PATCH] Fix tinting on injected pref icon We used to tint the injected pref icon when refreshing Tile. However, when we are going to render the icon, we used Tile.getIcon which uses the icon resource id to get the original version of icon directly. Do a little refactor here to move the tinting logic inside Tile.getIcon. Test: Manual/Visual inspection Fixes: 129010399 Change-Id: I6f187b12cb6d91b54dcfe43e0ff34add55fd7b07 --- .../dashboard/DashboardFeatureProviderImpl.java | 4 +++- .../settings/dashboard/DashboardFragment.java | 12 ------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java index 2cac4c2a87a..64086cb9a33 100644 --- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java @@ -192,7 +192,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { @VisibleForTesting void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) { - final Icon tileIcon = tile.getIcon(mContext); + // Use preference context instead here when get icon from Tile, as we are using the context + // to get the style to tint the icon. Using mContext here won't get the correct style. + final Icon tileIcon = tile.getIcon(preference.getContext()); if (tileIcon != null) { Drawable iconDrawable = tileIcon.loadDrawable(preference.getContext()); if (forceRoundedIcon diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index dde98ce0a4d..16303116432 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -18,8 +18,6 @@ package com.android.settings.dashboard; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.drawable.Icon; import android.os.Bundle; import android.text.TextUtils; import android.util.ArrayMap; @@ -410,10 +408,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment final Context context = getContext(); mSummaryLoader = new SummaryLoader(getActivity(), getCategoryKey()); mSummaryLoader.setSummaryConsumer(this); - final TypedArray a = context.obtainStyledAttributes(new int[]{ - android.R.attr.colorControlNormal}); - final int tintColor = a.getColor(0, context.getColor(android.R.color.white)); - a.recycle(); // Install dashboard tiles. final boolean forceRoundedIcons = shouldForceRoundedIcon(); for (Tile tile : tiles) { @@ -425,12 +419,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (!displayTile(tile)) { continue; } - if (tile.isIconTintable(context)) { - final Icon icon = tile.getIcon(context); - if (icon != null) { - icon.setTint(tintColor); - } - } if (mDashboardTilePrefKeys.contains(key)) { // Have the key already, will rebind. final Preference preference = screen.findPreference(key);