1. Fixed album art image is not clear enough and always shows the previous song's cover;

2. Change Setting -> Personalize -> LOCKSCREEN (Show album cover, Blur album cover, Fullscreen controls) only about lockscreen, without change notification style anymore;
3. Lockscreen adapt landscape mode;
4. Move lockscreen image to the top, keep looks like player's style;
5. Change some defStyleAttr default value frome -1 to 0, to make Android Studio to preview;
6. Fitting more pages can display circular buttons.
This commit is contained in:
michaellee123 2022-12-27 21:52:10 +08:00
parent 4ce212a6e6
commit 94bc86b5d4
7 changed files with 182 additions and 66 deletions

View file

@ -26,10 +26,13 @@ import code.name.monkey.retromusic.extensions.hideStatusBar
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
import code.name.monkey.retromusic.extensions.whichFragment
import code.name.monkey.retromusic.fragments.player.lockscreen.LockScreenControlsFragment
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.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.r0adkll.slidr.Slidr
import com.r0adkll.slidr.model.SlidrConfig
@ -88,7 +91,7 @@ class LockScreenActivity : AbsMusicServiceActivity() {
} else {
window.addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
// or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
// or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
)
}
}
@ -104,16 +107,31 @@ class LockScreenActivity : AbsMusicServiceActivity() {
}
private fun updateSongs() {
if (!isAlbumArtOnLockScreen) {
binding.image.setImageResource(R.drawable.default_audio_art)
return
}
val song = MusicPlayerRemote.currentSong
GlideApp.with(this)
.asBitmapPalette()
.songCoverOptions(song)
.load(RetroGlideExtension.getSongModel(song))
.dontAnimate()
.transition(RetroGlideExtension.getDefaultTransition())
.into(object : RetroMusicColoredTarget(binding.image) {
override fun onColorReady(colors: MediaNotificationProcessor) {
fragment?.setColor(colors)
}
})
if (PreferenceUtil.isBlurredAlbumArt) {
GlideApp.with(this)
.load(RetroGlideExtension.getSongModel(song))
.transition(RetroGlideExtension.getDefaultTransition())
.transform(BlurTransformation.Builder(this).blurRadius(25f).build())
.into(binding.ivBlurredAlbumArt)
}
}
}

View file

@ -155,6 +155,11 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
progressViewUpdateHelper = MusicProgressViewUpdateHelper(this)
if (PreferenceUtil.circlePlayButton) {
requireContext().theme.applyStyle(R.style.CircleFABOverlay, true)
} else {
requireContext().theme.applyStyle(R.style.RoundedFABOverlay, true)
}
}
fun View.showBounceAnimation() {

View file

@ -70,7 +70,6 @@ import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.MusicUtil.toggleFavorite
import code.name.monkey.retromusic.util.PackageValidator
import code.name.monkey.retromusic.util.PreferenceUtil.crossFadeDuration
import code.name.monkey.retromusic.util.PreferenceUtil.isAlbumArtOnLockScreen
import code.name.monkey.retromusic.util.PreferenceUtil.isBluetoothSpeaker
import code.name.monkey.retromusic.util.PreferenceUtil.isBlurredAlbumArt
import code.name.monkey.retromusic.util.PreferenceUtil.isClassicNotification
@ -1022,19 +1021,13 @@ class MusicService : MediaBrowserServiceCompat(),
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null)
.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, playingQueue.size.toLong())
if (isAlbumArtOnLockScreen || VERSION.SDK_INT == 33) {
// val screenSize: Point = RetroUtil.getScreenSize(this)
val request = GlideApp.with(this)
// there only about notification's album art, so remove "isAlbumArtOnLockScreen" and "isBlurredAlbumArt"
GlideApp.with(this)
.asBitmap()
.songCoverOptions(song)
.load(getSongModel(song))
.transition(getDefaultTransition())
if (isBlurredAlbumArt) {
request.transform(BlurTransformation.Builder(this@MusicService).build())
}
request.into(object :
CustomTarget<Bitmap?>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
.into(object : CustomTarget<Bitmap?>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) {
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
metaData.putBitmap(
@ -1062,10 +1055,6 @@ class MusicService : MediaBrowserServiceCompat(),
override fun onLoadCleared(placeholder: Drawable?) {}
})
} else {
mediaSession?.setMetadata(metaData.build())
onCompletion()
}
}
private fun handleChangeInternal(what: String) {

View file

@ -20,7 +20,7 @@ import android.widget.FrameLayout
class HeightFitSquareLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = -1
defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr){
private var forceSquare = true

View file

@ -21,7 +21,7 @@ import android.view.View
class StatusBarView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = -1
defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {