Using Drawable Extensions to convert drawables to bitmaps

This commit is contained in:
Prathamesh More 2022-04-20 19:54:02 +05:30
parent c09e39b23f
commit b9c580ca3f
2 changed files with 33 additions and 37 deletions

View file

@ -22,6 +22,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import androidx.annotation.DimenRes import androidx.annotation.DimenRes
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.core.graphics.drawable.toBitmap
fun Context.scaledDrawableResources( fun Context.scaledDrawableResources(
@DrawableRes id: Int, @DrawableRes id: Int,
@ -39,6 +40,10 @@ fun Context.scaledDrawable(@DrawableRes id: Int, width: Int, height: Int): Drawa
return BitmapDrawable(resources, bmpScaled) return BitmapDrawable(resources, bmpScaled)
} }
fun Drawable.toBitmap(scaleFactor: Float, config: Bitmap.Config? = null): Bitmap {
return toBitmap((intrinsicHeight*scaleFactor).toInt(), (intrinsicWidth*scaleFactor).toInt(), config)
}
fun Drawable.getBitmapDrawable(): Bitmap { fun Drawable.getBitmapDrawable(): Bitmap {
val bmp = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888) val bmp = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.ARGB_8888)
val canvas = Canvas(bmp) val canvas = Canvas(bmp)

View file

@ -25,6 +25,7 @@ import android.graphics.Color
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.widget.RemoteViews import android.widget.RemoteViews
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.toBitmap
import androidx.media.app.NotificationCompat.DecoratedMediaCustomViewStyle import androidx.media.app.NotificationCompat.DecoratedMediaCustomViewStyle
import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor import code.name.monkey.appthemehelper.util.ATHUtil.resolveColor
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -34,6 +35,7 @@ import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.MainActivity import code.name.monkey.retromusic.activities.MainActivity
import code.name.monkey.retromusic.extensions.isColorLight import code.name.monkey.retromusic.extensions.isColorLight
import code.name.monkey.retromusic.extensions.isSystemDarkModeEnabled import code.name.monkey.retromusic.extensions.isSystemDarkModeEnabled
import code.name.monkey.retromusic.extensions.toBitmap
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper
@ -45,7 +47,6 @@ import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_SKIP
import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE import code.name.monkey.retromusic.service.MusicService.Companion.ACTION_TOGGLE_PAUSE
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
import code.name.monkey.retromusic.util.RetroUtil.createBitmap
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
@ -183,27 +184,23 @@ class PlayingNotificationClassic(
val secondary = MaterialValueHelper.getSecondaryTextColor(context, dark) val secondary = MaterialValueHelper.getSecondaryTextColor(context, dark)
primaryColor = primary primaryColor = primary
val close = createBitmap( val close = RetroUtil.getTintedVectorDrawable(
RetroUtil.getTintedVectorDrawable(
context, context,
R.drawable.ic_close, R.drawable.ic_close,
primary primary
), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ).toBitmap()
) val prev =
val prev = createBitmap(
RetroUtil.getTintedVectorDrawable( RetroUtil.getTintedVectorDrawable(
context, context,
R.drawable.ic_skip_previous_round_white_32dp, R.drawable.ic_skip_previous_round_white_32dp,
primary primary
), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ).toBitmap()
) val next =
val next = createBitmap(
RetroUtil.getTintedVectorDrawable( RetroUtil.getTintedVectorDrawable(
context, context,
R.drawable.ic_skip_next_round_white_32dp, R.drawable.ic_skip_next_round_white_32dp,
primary primary
), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ).toBitmap()
)
val playPause = getPlayPauseBitmap(true) val playPause = getPlayPauseBitmap(true)
contentView.setTextColor(R.id.title, primary) contentView.setTextColor(R.id.title, primary)
@ -225,38 +222,32 @@ class PlayingNotificationClassic(
contentView.setImageViewBitmap( contentView.setImageViewBitmap(
R.id.smallIcon, R.id.smallIcon,
createBitmap(
RetroUtil.getTintedVectorDrawable( RetroUtil.getTintedVectorDrawable(
context, context,
R.drawable.ic_notification, R.drawable.ic_notification,
secondary secondary
), 0.6f ).toBitmap(0.6f)
)
) )
bigContentView.setImageViewBitmap( bigContentView.setImageViewBitmap(
R.id.smallIcon, R.id.smallIcon,
createBitmap(
RetroUtil.getTintedVectorDrawable( RetroUtil.getTintedVectorDrawable(
context, context,
R.drawable.ic_notification, R.drawable.ic_notification,
secondary secondary
), 0.6f ).toBitmap(0.6f)
)
) )
} }
}) })
} }
private fun getPlayPauseBitmap(isPlaying: Boolean): Bitmap { private fun getPlayPauseBitmap(isPlaying: Boolean): Bitmap {
return createBitmap( return RetroUtil.getTintedVectorDrawable(
RetroUtil.getTintedVectorDrawable(
context, context,
if (isPlaying) if (isPlaying)
R.drawable.ic_pause_white_48dp R.drawable.ic_pause_white_48dp
else else
R.drawable.ic_play_arrow_white_48dp, primaryColor R.drawable.ic_play_arrow_white_48dp, primaryColor
), NOTIFICATION_CONTROLS_SIZE_MULTIPLIER ).toBitmap()
)
} }
override fun setPlaying(isPlaying: Boolean) { override fun setPlaying(isPlaying: Boolean) {