Fix shortcut icon in launcher
When building icon for shortcut, check if the icon is LayerDrawable.
- If yes, only take the second layer (foreground).
Also move the class to shortcut package
Change-Id: I3513dbeb6509f11aa70ab3230d441e268ca9356d
Fixes: 72553870
Test: atest
diff --git a/src/com/android/settings/SettingsInitialize.java b/src/com/android/settings/SettingsInitialize.java
index 6b15770..9f2bdcc 100644
--- a/src/com/android/settings/SettingsInitialize.java
+++ b/src/com/android/settings/SettingsInitialize.java
@@ -34,6 +34,8 @@
import static android.content.pm.PackageManager.GET_RESOLVED_FILTER;
import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS;
+import com.android.settings.shortcut.CreateShortcut;
+
/**
* Listens to {@link Intent.ACTION_PRE_BOOT_COMPLETED} and {@link Intent.ACTION_USER_INITIALIZED}
* performs setup steps for a managed profile (disables the launcher icon of the Settings app,
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index 1d21c12..0d8cbaf 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -34,7 +34,7 @@
import com.android.internal.app.LocalePicker;
import com.android.internal.app.LocaleStore;
-import com.android.settings.CreateShortcut;
+import com.android.settings.shortcut.CreateShortcut;
import com.android.settings.R;
import java.text.NumberFormat;
diff --git a/src/com/android/settings/CreateShortcut.java b/src/com/android/settings/shortcut/CreateShortcut.java
similarity index 92%
rename from src/com/android/settings/CreateShortcut.java
rename to src/com/android/settings/shortcut/CreateShortcut.java
index 8bc801b..2bd9b761 100644
--- a/src/com/android/settings/CreateShortcut.java
+++ b/src/com/android/settings/shortcut/CreateShortcut.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings;
+package com.android.settings.shortcut;
import android.app.LauncherActivity;
import android.content.ComponentName;
@@ -28,7 +28,9 @@
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
+import android.graphics.drawable.LayerDrawable;
import android.net.ConnectivityManager;
import android.os.AsyncTask;
import android.support.annotation.VisibleForTesting;
@@ -40,6 +42,7 @@
import android.widget.ListView;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
import com.android.settings.Settings.TetherSettingsActivity;
import com.android.settings.overlay.FeatureFactory;
@@ -65,7 +68,8 @@
finish();
}
- protected Intent createResultIntent(Intent shortcutIntent, ResolveInfo resolveInfo,
+ @VisibleForTesting
+ Intent createResultIntent(Intent shortcutIntent, ResolveInfo resolveInfo,
CharSequence label) {
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
ShortcutManager sm = getSystemService(ShortcutManager.class);
@@ -94,8 +98,8 @@
if (activityInfo.icon != 0) {
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, createIcon(activityInfo.icon,
- R.layout.shortcut_badge,
- getResources().getDimensionPixelSize(R.dimen.shortcut_size)));
+ R.layout.shortcut_badge,
+ getResources().getDimensionPixelSize(R.dimen.shortcut_size)));
}
return intent;
}
@@ -112,7 +116,11 @@
private Bitmap createIcon(int resource, int layoutRes, int size) {
Context context = new ContextThemeWrapper(this, android.R.style.Theme_Material);
View view = LayoutInflater.from(context).inflate(layoutRes, null);
- ((ImageView) view.findViewById(android.R.id.icon)).setImageResource(resource);
+ Drawable iconDrawable = getDrawable(resource);
+ if (iconDrawable instanceof LayerDrawable) {
+ iconDrawable = ((LayerDrawable) iconDrawable).getDrawable(1);
+ }
+ ((ImageView) view.findViewById(android.R.id.icon)).setImageDrawable(iconDrawable);
int spec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
view.measure(spec, spec);