From a2dc826a82da6c9573d92f95e1139624998d5c8f Mon Sep 17 00:00:00 2001 From: Matteo Destro Date: Sat, 23 Dec 2017 14:00:54 +0100 Subject: [PATCH 1/3] Add adaptive icon for shortcut --- .../appshortcuts/AppShortcutIconGenerator.java | 18 ++++++++++++++---- .../ic_app_shortcut_background.xml | 11 +++++++++++ .../ic_app_shortcut_last_added.xml | 18 ++++++++++++++++++ .../ic_app_shortcut_shuffle_all.xml | 18 ++++++++++++++++++ .../ic_app_shortcut_top_tracks.xml | 18 ++++++++++++++++++ 5 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable-v26/ic_app_shortcut_background.xml create mode 100644 app/src/main/res/drawable-v26/ic_app_shortcut_last_added.xml create mode 100644 app/src/main/res/drawable-v26/ic_app_shortcut_shuffle_all.xml create mode 100644 app/src/main/res/drawable-v26/ic_app_shortcut_top_tracks.xml diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java index a01488b2..4798d97e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java @@ -3,9 +3,14 @@ package com.kabouzeid.gramophone.appshortcuts; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.graphics.drawable.LayerDrawable; +import android.graphics.drawable.ScaleDrawable; +import android.graphics.drawable.ShapeDrawable; +import android.graphics.drawable.shapes.RectShape; +import android.graphics.drawable.shapes.Shape; import android.os.Build; import android.support.annotation.RequiresApi; import android.util.TypedValue; @@ -53,11 +58,16 @@ public final class AppShortcutIconGenerator { Drawable vectorDrawable = Util.getTintedVectorDrawable(context, iconId, foregroundColor); Drawable backgroundDrawable = Util.getTintedVectorDrawable(context, R.drawable.ic_app_shortcut_background, backgroundColor); - // Squash the two drawables together - LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{backgroundDrawable, vectorDrawable}); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ + AdaptiveIconDrawable adaptiveIconDrawable = new AdaptiveIconDrawable(backgroundDrawable, vectorDrawable); + return Icon.createWithAdaptiveBitmap(drawableToBitmap(adaptiveIconDrawable)); + } else { + // Squash the two drawables together + LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{backgroundDrawable, vectorDrawable}); - // Return as an Icon - return Icon.createWithBitmap(drawableToBitmap(layerDrawable)); + // Return as an Icon + return Icon.createWithBitmap(drawableToBitmap(layerDrawable)); + } } private static Bitmap drawableToBitmap(Drawable drawable) { diff --git a/app/src/main/res/drawable-v26/ic_app_shortcut_background.xml b/app/src/main/res/drawable-v26/ic_app_shortcut_background.xml new file mode 100644 index 00000000..973bbdba --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_app_shortcut_background.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable-v26/ic_app_shortcut_last_added.xml b/app/src/main/res/drawable-v26/ic_app_shortcut_last_added.xml new file mode 100644 index 00000000..e65d3cca --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_app_shortcut_last_added.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v26/ic_app_shortcut_shuffle_all.xml b/app/src/main/res/drawable-v26/ic_app_shortcut_shuffle_all.xml new file mode 100644 index 00000000..8ed012ef --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_app_shortcut_shuffle_all.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v26/ic_app_shortcut_top_tracks.xml b/app/src/main/res/drawable-v26/ic_app_shortcut_top_tracks.xml new file mode 100644 index 00000000..7b136c19 --- /dev/null +++ b/app/src/main/res/drawable-v26/ic_app_shortcut_top_tracks.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file From 1f6ebdb1840e44b44b1a628da7078879f7944dce Mon Sep 17 00:00:00 2001 From: Matteo Destro Date: Sat, 23 Dec 2017 14:04:21 +0100 Subject: [PATCH 2/3] Removed unused imports --- .../gramophone/appshortcuts/AppShortcutIconGenerator.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java index 4798d97e..149060dc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java @@ -7,10 +7,6 @@ import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.graphics.drawable.LayerDrawable; -import android.graphics.drawable.ScaleDrawable; -import android.graphics.drawable.ShapeDrawable; -import android.graphics.drawable.shapes.RectShape; -import android.graphics.drawable.shapes.Shape; import android.os.Build; import android.support.annotation.RequiresApi; import android.util.TypedValue; From 285f2fdf99494c0250c466ab16dc576f6831025a Mon Sep 17 00:00:00 2001 From: Matteo Destro Date: Sat, 23 Dec 2017 18:17:17 +0100 Subject: [PATCH 3/3] Switched to IconCompat --- .../appshortcuts/AppShortcutIconGenerator.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java index 149060dc..33171021 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java +++ b/app/src/main/java/com/kabouzeid/gramophone/appshortcuts/AppShortcutIconGenerator.java @@ -9,6 +9,7 @@ import android.graphics.drawable.Icon; import android.graphics.drawable.LayerDrawable; import android.os.Build; import android.support.annotation.RequiresApi; +import android.support.v4.graphics.drawable.IconCompat; import android.util.TypedValue; import com.kabouzeid.appthemehelper.ThemeStore; @@ -23,13 +24,13 @@ import com.kabouzeid.gramophone.util.Util; public final class AppShortcutIconGenerator { public static Icon generateThemedIcon(Context context, int iconId) { if (PreferenceUtil.getInstance(context).coloredAppShortcuts()){ - return generateUserThemedIcon(context, iconId); + return generateUserThemedIcon(context, iconId).toIcon(); } else { - return generateDefaultThemedIcon(context, iconId); + return generateDefaultThemedIcon(context, iconId).toIcon(); } } - private static Icon generateDefaultThemedIcon(Context context, int iconId) { + private static IconCompat generateDefaultThemedIcon(Context context, int iconId) { // Return an Icon of iconId with default colors return generateThemedIcon(context, iconId, context.getColor(R.color.app_shortcut_default_foreground), @@ -37,7 +38,7 @@ public final class AppShortcutIconGenerator { ); } - private static Icon generateUserThemedIcon(Context context, int iconId) { + private static IconCompat generateUserThemedIcon(Context context, int iconId) { // Get background color from context's theme final TypedValue typedColorBackground = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.colorBackground, typedColorBackground, true); @@ -49,20 +50,20 @@ public final class AppShortcutIconGenerator { ); } - private static Icon generateThemedIcon(Context context, int iconId, int foregroundColor, int backgroundColor) { + private static IconCompat generateThemedIcon(Context context, int iconId, int foregroundColor, int backgroundColor) { // Get and tint foreground and background drawables Drawable vectorDrawable = Util.getTintedVectorDrawable(context, iconId, foregroundColor); Drawable backgroundDrawable = Util.getTintedVectorDrawable(context, R.drawable.ic_app_shortcut_background, backgroundColor); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ AdaptiveIconDrawable adaptiveIconDrawable = new AdaptiveIconDrawable(backgroundDrawable, vectorDrawable); - return Icon.createWithAdaptiveBitmap(drawableToBitmap(adaptiveIconDrawable)); + return IconCompat.createWithAdaptiveBitmap(drawableToBitmap(adaptiveIconDrawable)); } else { // Squash the two drawables together LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{backgroundDrawable, vectorDrawable}); // Return as an Icon - return Icon.createWithBitmap(drawableToBitmap(layerDrawable)); + return IconCompat.createWithBitmap(drawableToBitmap(layerDrawable)); } }