Added CrossFade effect to Blur, Blur Card & Circle player

This commit is contained in:
Prathamesh More 2021-12-15 00:45:30 +05:30
parent 4d31c4ccc3
commit c919033a2c
4 changed files with 84 additions and 44 deletions

View file

@ -16,6 +16,7 @@ package code.name.monkey.retromusic.fragments.player.blur
import android.content.SharedPreferences
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.View
import androidx.appcompat.widget.Toolbar
@ -27,18 +28,18 @@ import code.name.monkey.retromusic.databinding.FragmentBlurBinding
import code.name.monkey.retromusic.extensions.drawAboveSystemBars
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.glide.BlurTransformation
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
import code.name.monkey.retromusic.glide.*
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.util.PreferenceUtil.blurAmount
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
class BlurPlayerFragment : AbsPlayerFragment(R.layout.fragment_blur),
SharedPreferences.OnSharedPreferenceChangeListener {
private var lastRequest: GlideRequest<Drawable>? = null
override fun playerToolbar(): Toolbar {
return binding.playerToolbar
}
@ -111,23 +112,21 @@ class BlurPlayerFragment : AbsPlayerFragment(R.layout.fragment_blur),
get() = lastColor
private fun updateBlur() {
binding.colorBackground.clearColorFilter()
GlideApp.with(requireActivity()).asBitmapPalette()
.songCoverOptions(MusicPlayerRemote.currentSong)
// https://github.com/bumptech/glide/issues/527#issuecomment-148840717
GlideApp.with(this)
.load(RetroGlideExtension.getSongModel(MusicPlayerRemote.currentSong))
.dontAnimate()
.transform(
BlurTransformation.Builder(requireContext())
.blurRadius(blurAmount.toFloat())
.build()
)
.into(object : RetroMusicColoredTarget(binding.colorBackground) {
override fun onColorReady(colors: MediaNotificationProcessor) {
if (colors.backgroundColor == defaultFooterColor) {
binding.colorBackground.setColorFilter(colors.backgroundColor)
}
}
})
.songCoverOptions(MusicPlayerRemote.currentSong).apply {
thumbnail(lastRequest)
.crossfadeListener()
.transform(
BlurTransformation.Builder(requireContext())
.blurRadius(blurAmount.toFloat())
.build()
)
.into(binding.colorBackground)
lastRequest = this
}
}
override fun onServiceConnected() {

View file

@ -16,6 +16,7 @@ package code.name.monkey.retromusic.fragments.player.cardblur
import android.content.SharedPreferences
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.View
import androidx.appcompat.widget.Toolbar
@ -28,10 +29,7 @@ import code.name.monkey.retromusic.extensions.drawAboveSystemBars
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.fragments.player.normal.PlayerFragment
import code.name.monkey.retromusic.glide.BlurTransformation
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.RetroMusicColoredTarget
import code.name.monkey.retromusic.glide.*
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.util.PreferenceUtil.blurAmount
@ -50,6 +48,7 @@ class CardBlurFragment : AbsPlayerFragment(R.layout.fragment_card_blur_player),
private var _binding: FragmentCardBlurPlayerBinding? = null
private val binding get() = _binding!!
private var lastRequest: GlideRequest<Drawable>? = null
override fun onShow() {
playbackControlsFragment.show()
@ -136,22 +135,20 @@ class CardBlurFragment : AbsPlayerFragment(R.layout.fragment_card_blur_player),
}
private fun updateBlur() {
binding.colorBackground.clearColorFilter()
GlideApp.with(requireActivity()).asBitmapPalette()
.songCoverOptions(MusicPlayerRemote.currentSong)
// https://github.com/bumptech/glide/issues/527#issuecomment-148840717
GlideApp.with(this)
.load(RetroGlideExtension.getSongModel(MusicPlayerRemote.currentSong))
.dontAnimate()
.transform(
BlurTransformation.Builder(requireContext()).blurRadius(blurAmount.toFloat())
.build()
)
.into(object : RetroMusicColoredTarget(binding.colorBackground) {
override fun onColorReady(colors: MediaNotificationProcessor) {
if (colors.backgroundColor == defaultFooterColor) {
binding.colorBackground.setColorFilter(colors.backgroundColor)
}
}
})
.songCoverOptions(MusicPlayerRemote.currentSong).apply {
thumbnail(lastRequest)
.crossfadeListener()
.transform(
BlurTransformation.Builder(requireContext())
.blurRadius(blurAmount.toFloat())
.build()
)
.into(binding.colorBackground)
lastRequest = this
}
}
override fun onResume() {

View file

@ -19,6 +19,7 @@ import android.content.Context
import android.graphics.Color
import android.graphics.PorterDuff
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.media.AudioManager
import android.os.Bundle
import android.view.LayoutInflater
@ -37,8 +38,7 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension
import code.name.monkey.retromusic.glide.*
import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
@ -70,6 +70,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private val binding get() = _binding!!
private var rotateAnimator: ObjectAnimator? = null
private var lastRequest: GlideRequest<Drawable>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -241,9 +242,15 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
binding.songInfo.hide()
}
GlideApp.with(this)
.load(RetroGlideExtension.getSongModel(song))
.songCoverOptions(song)
.into(binding.albumCover)
.load(RetroGlideExtension.getSongModel(MusicPlayerRemote.currentSong))
.songCoverOptions(MusicPlayerRemote.currentSong).apply {
thumbnail(lastRequest)
.crossfadeListener()
.fitCenter()
.into(binding.albumCover)
lastRequest = this
}
}
private fun updatePlayPauseDrawableState() {