From 138ec909e2bd6ec062f014732fd03409cbd20bb4 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 28 Feb 2016 19:33:43 +0100 Subject: [PATCH] Fixed the notification. --- .../helper/PlayingNotificationHelper.java | 88 +++++++++++-------- .../com/kabouzeid/gramophone/util/Util.java | 5 ++ .../main/res/layout/card_special_thanks.xml | 8 +- 3 files changed, 58 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java index a6b2a2c2..e2d1dc56 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java @@ -11,8 +11,10 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.drawable.Drawable; +import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; @@ -22,6 +24,8 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; +import com.kabouzeid.appthemehelper.util.ColorUtil; +import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.glide.SongGlideRequest; import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; @@ -30,6 +34,7 @@ import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.ui.activities.MainActivity; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; +import com.kabouzeid.gramophone.util.Util; public class PlayingNotificationHelper { @@ -127,8 +132,6 @@ public class PlayingNotificationHelper { notificationLayoutBig.setOnClickPendingIntent(R.id.action_quit, retrievePlaybackActions(4)); - -// notificationLayoutBig.setImageViewResource(R.id.action_play_pause, getPlayPauseRes(isDark)); } private void setUpPlaybackActions() { @@ -140,8 +143,6 @@ public class PlayingNotificationHelper { notificationLayout.setOnClickPendingIntent(R.id.action_prev, retrievePlaybackActions(3)); - -// notificationLayout.setImageViewResource(R.id.action_play_pause, getPlayPauseRes(isDark)); } private PendingIntent retrievePlaybackActions(final int which) { @@ -212,7 +213,7 @@ public class PlayingNotificationHelper { bgColor = Color.TRANSPARENT; } setBackgroundColor(bgColor); -// setDarkNotificationContent(bgColor == Color.TRANSPARENT ? Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP : ColorUtil.isColorLight(bgColor)); + setDarkNotificationContent(bgColor == Color.TRANSPARENT ? Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP : ColorUtil.isColorLight(bgColor)); if (notification != null) { notificationManager.notify(notificationId, notification); @@ -235,44 +236,53 @@ public class PlayingNotificationHelper { if (notification == null) { updateNotification(); } -// int playPauseRes = getPlayPauseRes(isDark); -// if (notificationLayout != null) { -// notificationLayout.setImageViewResource(R.id.action_play_pause, playPauseRes); -// } -// if (notificationLayoutBig != null) { -// notificationLayoutBig.setImageViewResource(R.id.action_play_pause, playPauseRes); -// } + setPlayPauseDrawable(); if (notification != null) { notificationManager.notify(notificationId, notification); } } -// private void setDarkNotificationContent(boolean dark) { -// isDark = dark; -// -// if (notificationLayout != null && notificationLayoutBig != null) { -// int darkContentColor = ContextCompat.getColor(service, R.color.primary_text_default_material_light); -// int darkContentSecondaryColor = ContextCompat.getColor(service, R.color.secondary_text_default_material_light); -// int contentColor = ContextCompat.getColor(service, R.color.primary_text_default_material_dark); -// int contentSecondaryColor = ContextCompat.getColor(service, R.color.secondary_text_default_material_dark); -// -// notificationLayout.setTextColor(R.id.title, dark ? darkContentColor : contentColor); -// notificationLayout.setTextColor(R.id.text, dark ? darkContentSecondaryColor : contentSecondaryColor); -// notificationLayout.setImageViewResource(R.id.action_prev, dark ? R.drawable.ic_skip_previous_dark_36dp : R.drawable.ic_skip_previous_white_36dp); -// notificationLayout.setImageViewResource(R.id.action_play_pause, getPlayPauseRes(dark)); -// notificationLayout.setImageViewResource(R.id.action_next, dark ? R.drawable.ic_skip_next_dark_36dp : R.drawable.ic_skip_next_white_36dp); -// -// notificationLayoutBig.setTextColor(R.id.title, dark ? darkContentColor : contentColor); -// notificationLayoutBig.setTextColor(R.id.text, dark ? darkContentSecondaryColor : contentSecondaryColor); -// notificationLayoutBig.setTextColor(R.id.text2, dark ? darkContentSecondaryColor : contentSecondaryColor); -// notificationLayoutBig.setImageViewResource(R.id.action_prev, dark ? R.drawable.ic_skip_previous_dark_36dp : R.drawable.ic_skip_previous_white_36dp); -// notificationLayoutBig.setImageViewResource(R.id.action_play_pause, getPlayPauseRes(dark)); -// notificationLayoutBig.setImageViewResource(R.id.action_next, dark ? R.drawable.ic_skip_next_dark_36dp : R.drawable.ic_skip_next_white_36dp); -// notificationLayoutBig.setImageViewResource(R.id.action_quit, dark ? R.drawable.ic_close_dark_24dp : R.drawable.ic_close_white_24dp); -// } -// } + private void setDarkNotificationContent(boolean dark) { + isDark = dark; + setPlayPauseDrawable(); -// private int getPlayPauseRes(boolean dark) { -// return isPlaying ? (dark ? R.drawable.ic_pause_dark_36dp : R.drawable.ic_pause_white_36dp) : (dark ? R.drawable.ic_play_arrow_dark_36dp : R.drawable.ic_play_arrow_white_36dp); -// } + if (notificationLayout != null && notificationLayoutBig != null) { + int primary = MaterialValueHelper.getPrimaryTextColor(service, dark); + int secondary = MaterialValueHelper.getSecondaryTextColor(service, dark); + + Bitmap prev = createBitmap(Util.getTintedDrawable(service, R.drawable.ic_skip_previous_black_24dp, primary), 1.5f); + Bitmap next = createBitmap(Util.getTintedDrawable(service, R.drawable.ic_skip_next_black_24dp, primary), 1.5f); + Bitmap close = createBitmap(Util.getTintedDrawable(service, R.drawable.ic_close_black_24dp, secondary), 1f); + + notificationLayout.setTextColor(R.id.title, primary); + notificationLayout.setTextColor(R.id.text, secondary); + notificationLayout.setImageViewBitmap(R.id.action_prev, prev); + notificationLayout.setImageViewBitmap(R.id.action_next, next); + + notificationLayoutBig.setTextColor(R.id.title, primary); + notificationLayoutBig.setTextColor(R.id.text, secondary); + notificationLayoutBig.setTextColor(R.id.text2, secondary); + notificationLayoutBig.setImageViewBitmap(R.id.action_prev, prev); + notificationLayoutBig.setImageViewBitmap(R.id.action_next, next); + notificationLayoutBig.setImageViewBitmap(R.id.action_quit, close); + } + } + + private void setPlayPauseDrawable() { + Bitmap playPause = createBitmap(Util.getTintedDrawable(service, isPlaying ? R.drawable.ic_pause_black_24dp : R.drawable.ic_play_arrow_black_24dp, MaterialValueHelper.getPrimaryTextColor(service, isDark)), 1.5f); + if (notificationLayout != null) { + notificationLayout.setImageViewBitmap(R.id.action_play_pause, playPause); + } + if (notificationLayoutBig != null) { + notificationLayoutBig.setImageViewBitmap(R.id.action_play_pause, playPause); + } + } + + private static Bitmap createBitmap(Drawable drawable, float sizeMultiplier) { + Bitmap bitmap = Bitmap.createBitmap((int) (drawable.getIntrinsicWidth() * sizeMultiplier), (int) (drawable.getIntrinsicHeight() * sizeMultiplier), Bitmap.Config.ARGB_8888); + Canvas c = new Canvas(bitmap); + drawable.setBounds(0, 0, c.getWidth(), c.getHeight()); + drawable.draw(c); + return bitmap; + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java index 91f94957..31a4b33c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java @@ -17,6 +17,7 @@ import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; +import android.support.v7.widget.TintContextWrapper; import android.util.TypedValue; import android.view.Display; import android.view.View; @@ -94,6 +95,10 @@ public class Util { } public static Drawable getTintedDrawable(@NonNull Context context, @DrawableRes int drawableResId, int color) { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) { + // vector support + context = TintContextWrapper.wrap(context); + } Drawable drawable = ContextCompat.getDrawable(context, drawableResId); if (drawable != null) { // If we don't mutate the drawable, then all drawables with this id will have a color diff --git a/app/src/main/res/layout/card_special_thanks.xml b/app/src/main/res/layout/card_special_thanks.xml index c4184837..3c006f51 100644 --- a/app/src/main/res/layout/card_special_thanks.xml +++ b/app/src/main/res/layout/card_special_thanks.xml @@ -27,7 +27,7 @@ + android:background="?attr/dividerColor" /> + android:background="?attr/dividerColor" /> + android:background="?attr/dividerColor" /> + android:background="?attr/dividerColor" />