diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt index d9a3cb50..5d6b2e62 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/ViewExtensions.kt @@ -14,10 +14,13 @@ package code.name.monkey.retromusic.extensions +import android.content.res.ColorStateList import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.EditText +import android.widget.SeekBar +import androidx.annotation.ColorInt import androidx.annotation.LayoutRes import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.TintHelper @@ -51,4 +54,11 @@ fun Slider.setRange(progress: Float, to: Float) { valueFrom = 0F valueTo = to value = progress +} + + +fun SeekBar.applyColor(@ColorInt color: Int) { + thumbTintList = ColorStateList.valueOf(color) + progressTintList = ColorStateList.valueOf(color) + progressBackgroundTintList = ColorStateList.valueOf(color) } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt index e19b84aa..b0dc0b91 100755 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/VolumeFragment.kt @@ -8,21 +8,20 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.SeekBar import androidx.fragment.app.Fragment import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.extensions.setRange +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener -import com.google.android.material.slider.Slider - import kotlinx.android.synthetic.main.fragment_volume.* -class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, - View.OnClickListener, Slider.OnChangeListener { +class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolumeChangedListener, + View.OnClickListener { private var audioVolumeObserver: AudioVolumeObserver? = null @@ -51,23 +50,20 @@ class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, val audioManager = audioManager if (audioManager != null) { - volumeSeekBar.valueTo = - audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC).toFloat() - volumeSeekBar.value = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC).toFloat() + volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) + volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) } - volumeSeekBar.addOnChangeListener(this) + volumeSeekBar.setOnSeekBarChangeListener(this) } - override fun onAudioVolumeChanged(currentVolume: Float, maxVolume: Float) { + override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { if (volumeSeekBar == null) { return } - if (maxVolume <= 0.0f) { - setPauseWhenZeroVolume(currentVolume < 1) - return - } - volumeSeekBar.setRange(currentVolume, maxVolume) - volumeDown.setImageResource(if (currentVolume == 0.0f) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) + + volumeSeekBar.max = maxVolume + volumeSeekBar.progress = currentVolume + volumeDown.setImageResource(if (currentVolume == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) } override fun onDestroyView() { @@ -77,6 +73,19 @@ class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, } } + override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { + val audioManager = audioManager + audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0) + setPauseWhenZeroVolume(i < 1) + volumeDown?.setImageResource(if (i == 0) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) + } + + override fun onStartTrackingTouch(seekBar: SeekBar) { + } + + override fun onStopTrackingTouch(seekBar: SeekBar) { + } + override fun onClick(view: View) { val audioManager = audioManager when (view.id) { @@ -98,11 +107,17 @@ class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, } fun setTintable(color: Int) { - ViewUtil.setProgressDrawable(volumeSeekBar, color, true) + volumeSeekBar.applyColor(color) + } + + fun removeThumb() { + volumeSeekBar.thumb = null } private fun setPauseWhenZeroVolume(pauseWhenZeroVolume: Boolean) { - if (PreferenceUtil.getInstance(requireContext()).pauseOnZeroVolume()) if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) { + if (PreferenceUtil.getInstance(requireContext()) + .pauseOnZeroVolume() + ) if (MusicPlayerRemote.isPlaying && pauseWhenZeroVolume) { MusicPlayerRemote.pauseSong() } } @@ -110,6 +125,7 @@ class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, fun setTintableColor(color: Int) { volumeDown.setColorFilter(color, PorterDuff.Mode.SRC_IN) volumeUp.setColorFilter(color, PorterDuff.Mode.SRC_IN) + //TintHelper.setTint(volumeSeekBar, color, false) ViewUtil.setProgressDrawable(volumeSeekBar, color, true) } @@ -119,14 +135,4 @@ class VolumeFragment : Fragment(), OnAudioVolumeChangedListener, return VolumeFragment() } } - - override fun onValueChange(slider: Slider, value: Float, fromUser: Boolean) { - if (value <= 0) { - return - } - val audioManager = audioManager - audioManager?.setStreamVolume(AudioManager.STREAM_MUSIC, value.toInt(), 0) - setPauseWhenZeroVolume(value < 1.0f) - volumeDown.setImageResource(if (value == 0.0f) R.drawable.ic_volume_off_white_24dp else R.drawable.ic_volume_down_white_24dp) - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt index 70b193c1..eb73da8a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptiveFragment.kt @@ -207,11 +207,9 @@ class AdaptiveFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Call } override fun onShow() { - playbackControlsFragment.show() } override fun onHide() { - playbackControlsFragment.hide() onBackPressed() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt index aec2e4a8..3046f80b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/adaptive/AdaptivePlaybackControlsFragment.kt @@ -1,16 +1,20 @@ package code.name.monkey.retromusic.fragments.player.adaptive +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show @@ -18,11 +22,10 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.SliderReadTimeLabelFormatter -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.* @@ -139,7 +142,7 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() { false ) TintHelper.setTintAuto(playPauseButton, colorFinal, true) - ViewUtil.setProgressDrawable(progressSlider, colorFinal, true) + progressSlider.applyColor(colorFinal) volumeFragment?.setTintable(colorFinal) } @@ -182,6 +185,14 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() { shuffleButton.setOnClickListener { MusicPlayerRemote.toggleShuffleMode() } } + override fun show() { + + } + + override fun hide() { + + } + override fun updateShuffleState() { when (MusicPlayerRemote.shuffleMode) { MusicService.SHUFFLE_MODE_SHUFFLE -> shuffleButton.setColorFilter( @@ -219,31 +230,29 @@ class AdaptivePlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - public override fun show() { - //Ignore - } - - public override fun hide() { - //Ignore - } - - override fun setUpProgressSlider() { - progressSlider.setLabelFormatter(SliderReadTimeLabelFormatter()) - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt index 2203a82f..977c2311 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/blur/BlurPlaybackControlsFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.blur +import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle @@ -8,6 +9,8 @@ import android.view.View import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import androidx.core.content.ContextCompat import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper @@ -19,11 +22,24 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.* +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.nextButton +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.playPauseButton +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.previousButton +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.progressSlider +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.repeatButton +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.shuffleButton +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.songCurrentProgress +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.songInfo +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.songTotalTime +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.text +import kotlinx.android.synthetic.main.fragment_blur_player_playback_controls.title +import kotlinx.android.synthetic.main.fragment_player_playback_controls.* class BlurPlaybackControlsFragment : AbsPlayerControlsFragment() { @@ -252,22 +268,29 @@ class BlurPlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt index 23c2feac..8e15b127 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/cardblur/CardBlurPlaybackControlsFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.cardblur +import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle @@ -7,20 +8,22 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ColorUtil -import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_card_blur_player_playback_controls.* import kotlinx.android.synthetic.main.media_button.* @@ -62,7 +65,6 @@ class CardBlurPlaybackControlsFragment : AbsPlayerControlsFragment() { updatePrevNextColor() updateProgressTextColor() - ViewUtil.setProgressDrawable(progressSlider, Color.WHITE, true) volumeFragment?.tintWhiteColor() } @@ -82,7 +84,7 @@ class CardBlurPlaybackControlsFragment : AbsPlayerControlsFragment() { } private fun updateProgressTextColor() { - val color = MaterialValueHelper.getPrimaryTextColor(context, false) + val color = Color.WHITE songTotalTime.setTextColor(color) songCurrentProgress.setTextColor(color) songInfo.setTextColor(color) @@ -210,22 +212,30 @@ class CardBlurPlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.applyColor(Color.WHITE) + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt index e6e2d7d8..dde68dfe 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/circle/CirclePlayerFragment.kt @@ -14,6 +14,7 @@ package code.name.monkey.retromusic.fragments.player.circle +import android.animation.ObjectAnimator import android.content.Context import android.graphics.Color import android.graphics.PorterDuff @@ -22,6 +23,8 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import androidx.appcompat.widget.Toolbar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil @@ -29,13 +32,17 @@ import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.accentColor +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil @@ -98,9 +105,8 @@ class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChanged ThemeStore.accentColor(requireContext()), false ) - volumeSeekBar.progressColor = ThemeStore.accentColor(requireContext()) - volumeSeekBar.arcColor = ColorUtil - .withAlpha(ThemeStore.accentColor(requireContext()), 0.25f) + volumeSeekBar.progressColor = accentColor() + volumeSeekBar.arcColor = ColorUtil.withAlpha(accentColor(), 0.25f) setUpPlayPauseFab() setUpPrevNext() setUpPlayerToolbar() @@ -204,13 +210,12 @@ class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChanged } } - override fun onAudioVolumeChanged(currentVolume: Float, maxVolume: Float) { + override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { if (volumeSeekBar == null) { return } - - volumeSeekBar.max = maxVolume.toInt() - volumeSeekBar.progress = currentVolume.toInt() + volumeSeekBar.max = maxVolume + volumeSeekBar.progress = currentVolume } override fun onDestroyView() { @@ -231,22 +236,30 @@ class CirclePlayerFragment : AbsPlayerFragment(), Callback, OnAudioVolumeChanged override fun onStopTrackingTouch(seekArc: SeekArc?) { } + fun setUpProgressSlider() { + progressSlider.applyColor(accentColor()) + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt index 038fee58..1b0ed49c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/color/ColorPlaybackControlsFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.color +import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle @@ -7,19 +8,22 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_color_player_playback_controls.* @@ -99,11 +103,11 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { override fun setColor(color: MediaNotificationProcessor) { TintHelper.setTintAuto(playPauseButton, color.primaryTextColor, true) TintHelper.setTintAuto(playPauseButton, color.backgroundColor, false) + progressSlider.applyColor(color.primaryTextColor) title.setTextColor(color.primaryTextColor) text.setTextColor(color.secondaryTextColor) songInfo.setTextColor(color.secondaryTextColor) - ViewUtil.setProgressDrawable(progressSlider, color.primaryTextColor, true) songCurrentProgress.setTextColor(color.secondaryTextColor) songTotalTime.setTextColor(color.secondaryTextColor) volumeFragment?.setTintableColor(color.primaryTextColor) @@ -206,22 +210,29 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt index 568597ea..ac604dc4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/flat/FlatPlaybackControlsFragment.kt @@ -1,17 +1,21 @@ package code.name.monkey.retromusic.fragments.player.flat +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show @@ -20,10 +24,10 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_flat_player_playback_controls.* @@ -99,9 +103,7 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { updateTextColors(colorFinal) volumeFragment?.setTintable(colorFinal) - - ViewUtil.setProgressDrawable(progressSlider, colorFinal, true) - + progressSlider.applyColor(colorFinal) updateRepeatState() updateShuffleState() } @@ -171,25 +173,6 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { } } - override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() - songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) - songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) - } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } - override fun onRepeatModeChanged() { updateRepeatState() } @@ -238,4 +221,30 @@ class FlatPlaybackControlsFragment : AbsPlayerControlsFragment(), Callback { ) } } + + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index 7619fb02..3dd84252 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.full +import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.res.ColorStateList import android.graphics.Color @@ -11,21 +12,24 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator import android.widget.PopupMenu +import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_full_player_controls.* @@ -97,7 +101,7 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), playerMenu.imageTintList = tintList songFavourite.imageTintList = tintList volumeFragment?.setTintableColor(color.primaryTextColor) - ViewUtil.setProgressDrawable(progressSlider, color.primaryTextColor, true) + progressSlider.applyColor(color.primaryTextColor) title.setTextColor(color.primaryTextColor) text.setTextColor(color.secondaryTextColor) songInfo.setTextColor(color.secondaryTextColor) @@ -194,23 +198,30 @@ class FullPlaybackControlsFragment : AbsPlayerControlsFragment(), previousButton.setColorFilter(lastPlaybackControlsColor, PorterDuff.Mode.SRC_IN) } - override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() - songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) - songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) } - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } override fun onRepeatModeChanged() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt index 0eee1ce0..e32242c9 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/gradient/GradientPlayerFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.gradient +import android.animation.ObjectAnimator import android.content.res.ColorStateList import android.graphics.Color import android.graphics.PorterDuff @@ -8,7 +9,9 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator import android.widget.PopupMenu +import android.widget.SeekBar import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.constraintlayout.widget.ConstraintLayout @@ -26,10 +29,12 @@ import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.VolumeFragment +import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil @@ -305,24 +310,6 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe } } - override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() - songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) - songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) - } - - fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } private fun setUpPlayPauseFab() { playPauseButton.setOnClickListener(PlayPauseButtonOnClickHandler()) @@ -469,7 +456,33 @@ class GradientPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelpe linearLayoutManager.scrollToPositionWithOffset(MusicPlayerRemote.position + 1, 0) } - fun updateFavorite() { + fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + } + + private fun updateFavorite() { if (updateIsFavoriteTask != null) { updateIsFavoriteTask?.cancel(false) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt index 8adaf6fd..0243cd58 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/lockscreen/LockScreenPlayerControlsFragment.kt @@ -14,27 +14,31 @@ package code.name.monkey.retromusic.fragments.player.lockscreen +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.textColorSecondary import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_lock_screen_playback_controls.* @@ -124,11 +128,11 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { val colorFinal = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { color.primaryTextColor } else { - textColorSecondary( ) + textColorSecondary() }.ripAlpha() volumeFragment?.setTintable(colorFinal) - ViewUtil.setProgressDrawable(progressSlider, colorFinal, true) + progressSlider.applyColor(colorFinal) updateRepeatState() updateShuffleState() @@ -236,22 +240,29 @@ class LockScreenPlayerControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt index ad815b9d..f786f24e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/material/MaterialControlsFragment.kt @@ -1,25 +1,25 @@ package code.name.monkey.retromusic.fragments.player.material +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R -import code.name.monkey.retromusic.extensions.hide -import code.name.monkey.retromusic.extensions.ripAlpha -import code.name.monkey.retromusic.extensions.show -import code.name.monkey.retromusic.extensions.textColorSecondary +import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_material_playback_controls.* @@ -104,7 +104,7 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { MaterialValueHelper.getPrimaryTextColor(requireContext(), false) lastDisabledPlaybackControlsColor = MaterialValueHelper.getPrimaryDisabledTextColor(requireContext(), false) - }else{ + } else { lastPlaybackControlsColor = MaterialValueHelper.getSecondaryTextColor(requireContext(), true) lastDisabledPlaybackControlsColor = @@ -116,11 +116,11 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { val colorFinal = if (PreferenceUtil.getInstance(requireContext()).adaptiveColor) { lastPlaybackControlsColor } else { - textColorSecondary( ) + textColorSecondary() }.ripAlpha() text.setTextColor(colorFinal) - ViewUtil.setProgressDrawable(progressSlider, colorFinal, true) + progressSlider.applyColor(colorFinal) volumeFragment?.setTintable(colorFinal) @@ -212,22 +212,29 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { public override fun hide() { } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt index e54565ab..51ca4128 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/normal/PlayerPlaybackControlsFragment.kt @@ -1,17 +1,21 @@ package code.name.monkey.retromusic.fragments.player.normal +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show @@ -19,10 +23,10 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_player_playback_controls.* @@ -88,7 +92,7 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { false ) TintHelper.setTintAuto(playPauseButton, colorFinal, true) - ViewUtil.setProgressDrawable(progressSlider, colorFinal, true) + progressSlider.applyColor(colorFinal) volumeFragment?.setTintable(colorFinal) updateRepeatState() updateShuffleState() @@ -233,22 +237,29 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt index b6c2eacf..8f71d908 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/peak/PeakPlayerControlFragment.kt @@ -14,25 +14,29 @@ package code.name.monkey.retromusic.fragments.player.peak +import android.animation.ObjectAnimator import android.graphics.Color import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_peak_control_player.* @@ -90,7 +94,7 @@ class PeakPlayerControlFragment : AbsPlayerControlsFragment() { } else { ThemeStore.accentColor(requireContext()) } - ViewUtil.setProgressDrawable(progressSlider, controlsColor, true) + progressSlider.applyColor(controlsColor) volumeFragment?.setTintableColor(controlsColor) playPauseButton.setColorFilter(controlsColor, PorterDuff.Mode.SRC_IN) nextButton.setColorFilter(controlsColor, PorterDuff.Mode.SRC_IN) @@ -139,23 +143,30 @@ class PeakPlayerControlFragment : AbsPlayerControlsFragment() { } } - override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() - songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) - songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) } - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) + songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } private fun setUpPlayPauseFab() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt index 36159e83..bd9b7bec 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/plain/PlainPlaybackControlsFragment.kt @@ -1,5 +1,6 @@ package code.name.monkey.retromusic.fragments.player.plain +import android.animation.ObjectAnimator import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater @@ -7,25 +8,27 @@ import android.view.View import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.SeekBar import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.extensions.applyColor import code.name.monkey.retromusic.extensions.hide -import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler +import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil -import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor -import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.songInfo +import kotlinx.android.synthetic.main.fragment_adaptive_player_playback_controls.* import kotlinx.android.synthetic.main.fragment_plain_controls_fragment.nextButton import kotlinx.android.synthetic.main.fragment_plain_controls_fragment.playPauseButton import kotlinx.android.synthetic.main.fragment_plain_controls_fragment.previousButton @@ -159,6 +162,7 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { ThemeStore.accentColor(requireContext()) } volumeFragment?.setTintable(colorFinal) + progressSlider.applyColor(colorFinal) TintHelper.setTintAuto( playPauseButton, @@ -170,8 +174,6 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { ) TintHelper.setTintAuto(playPauseButton, colorFinal, true) - ViewUtil.setProgressDrawable(progressSlider, colorFinal.ripAlpha(), true) - updateRepeatState() updateShuffleState() updatePrevNextColor() @@ -268,22 +270,29 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { } } + override fun setUpProgressSlider() { + progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { + override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { + if (fromUser) { + MusicPlayerRemote.seekTo(progress) + onUpdateProgressViews( + MusicPlayerRemote.songProgressMillis, + MusicPlayerRemote.songDurationMillis + ) + } + } + }) + } + override fun onUpdateProgressViews(progress: Int, total: Int) { - progressSlider.valueTo = total.toFloat() - progressSlider.value = progress.toFloat() + progressSlider.max = total + + val animator = ObjectAnimator.ofInt(progressSlider, "progress", progress) + animator.duration = SLIDER_ANIMATION_TIME + animator.interpolator = LinearInterpolator() + animator.start() + songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) } - - override fun setUpProgressSlider() { - progressSlider.addOnChangeListener { _, value, fromUser -> - if (fromUser) { - MusicPlayerRemote.seekTo(value.toInt()) - onUpdateProgressViews( - MusicPlayerRemote.songProgressMillis, - MusicPlayerRemote.songDurationMillis - ) - } - } - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt index 0071fc04..bdd7ddf6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/tiny/TinyPlayerFragment.kt @@ -25,26 +25,11 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import kotlinx.android.synthetic.main.fragment_tiny_player.* -import kotlinx.android.synthetic.main.fragment_tiny_player.playerToolbar class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Callback { - override fun onUpdateProgressViews(progress: Int, total: Int) { - progressBar.max = total + private var lastColor: Int = 0 + private var toolbarColor: Int = 0 - val animator = ObjectAnimator.ofInt(progressBar, "progress", progress) - - val animatorSet = AnimatorSet() - animatorSet.playSequentially(animator) - - animatorSet.duration = 1500 - animatorSet.interpolator = LinearInterpolator() - animatorSet.start() - - playerSongTotalTime.text = String.format( - "%s/%s", MusicUtil.getReadableDurationString(total.toLong()), - MusicUtil.getReadableDurationString(progress.toLong()) - ) - } override fun playerToolbar(): Toolbar { return playerToolbar @@ -61,10 +46,9 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca } override fun toolbarIconColor(): Int { - return lastColor + return toolbarColor } - private var lastColor: Int = 0 override val paletteColor: Int get() = lastColor @@ -72,6 +56,7 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca override fun onColorChanged(color: MediaNotificationProcessor) { lastColor = color.backgroundColor + toolbarColor = color.secondaryTextColor controlsFragment.setColor(color) callbacks?.onPaletteColorChanged() @@ -81,7 +66,6 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca songInfo.setTextColor(color.secondaryTextColor) ViewUtil.setProgressDrawable(progressBar, color.backgroundColor) - Handler().post { ToolbarContentTintHelper.colorizeToolbar( playerToolbar, @@ -176,4 +160,22 @@ class TinyPlayerFragment : AbsPlayerFragment(), MusicProgressViewUpdateHelper.Ca super.onPlayingMetaChanged() updateSong() } + + override fun onUpdateProgressViews(progress: Int, total: Int) { + progressBar.max = total + + val animator = ObjectAnimator.ofInt(progressBar, "progress", progress) + + val animatorSet = AnimatorSet() + animatorSet.playSequentially(animator) + + animatorSet.duration = 1500 + animatorSet.interpolator = LinearInterpolator() + animatorSet.start() + + playerSongTotalTime.text = String.format( + "%s/%s", MusicUtil.getReadableDurationString(total.toLong()), + MusicUtil.getReadableDurationString(progress.toLong()) + ) + } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt index d20338fb..b256915d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/ViewUtil.kt @@ -41,8 +41,7 @@ object ViewUtil { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { val layerDrawable = progressSlider.progressDrawable as LayerDrawable val progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress) - progressDrawable.colorFilter = - BlendModeColorFilterCompat.createBlendModeColorFilterCompat(newColor, SRC_IN) + progressDrawable.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(newColor, SRC_IN) } else { progressSlider.progressTintList = ColorStateList.valueOf(newColor) } diff --git a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java index 2378cc36..7e1ec7c3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java +++ b/app/src/main/java/code/name/monkey/retromusic/volume/AudioVolumeContentObserver.java @@ -48,8 +48,8 @@ public class AudioVolumeContentObserver extends ContentObserver { @Override public void onChange(boolean selfChange, Uri uri) { if (mAudioManager != null && mListener != null) { - float maxVolume = mAudioManager.getStreamMaxVolume(mAudioStreamType); - float currentVolume = mAudioManager.getStreamVolume(mAudioStreamType); + int maxVolume = mAudioManager.getStreamMaxVolume(mAudioStreamType); + int currentVolume = mAudioManager.getStreamVolume(mAudioStreamType); if (currentVolume != mLastVolume) { mLastVolume = currentVolume; mListener.onAudioVolumeChanged(currentVolume, maxVolume); diff --git a/app/src/main/java/code/name/monkey/retromusic/volume/OnAudioVolumeChangedListener.kt b/app/src/main/java/code/name/monkey/retromusic/volume/OnAudioVolumeChangedListener.kt index 3fb91db0..948cd743 100644 --- a/app/src/main/java/code/name/monkey/retromusic/volume/OnAudioVolumeChangedListener.kt +++ b/app/src/main/java/code/name/monkey/retromusic/volume/OnAudioVolumeChangedListener.kt @@ -14,5 +14,5 @@ package code.name.monkey.retromusic.volume interface OnAudioVolumeChangedListener { - fun onAudioVolumeChanged(currentVolume: Float, maxVolume: Float) + fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) } \ No newline at end of file diff --git a/app/src/main/res/drawable-xxxhdpi/np_tiny.webp b/app/src/main/res/drawable-xxxhdpi/np_tiny.webp index b2ec68aa..2374fcca 100644 Binary files a/app/src/main/res/drawable-xxxhdpi/np_tiny.webp and b/app/src/main/res/drawable-xxxhdpi/np_tiny.webp differ diff --git a/app/src/main/res/layout-land/fragment_circle_player.xml b/app/src/main/res/layout-land/fragment_circle_player.xml index 48954b92..0795e18e 100644 --- a/app/src/main/res/layout-land/fragment_circle_player.xml +++ b/app/src/main/res/layout-land/fragment_circle_player.xml @@ -157,17 +157,14 @@ app:layout_constraintTop_toBottomOf="@+id/titleContainer" tools:text="@tools:sample/lorem/random" /> - - diff --git a/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml b/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml index a8f13005..6d132534 100644 --- a/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_adaptive_player_playback_controls.xml @@ -8,7 +8,6 @@ android:orientation="vertical" tools:ignore="MissingPrefix"> - - + app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintTop_toTopOf="parent" /> - - + app:layout_constraintTop_toBottomOf="@+id/volumeSeekBar" /> - diff --git a/app/src/main/res/layout/fragment_flat_player_playback_controls.xml b/app/src/main/res/layout/fragment_flat_player_playback_controls.xml index 5fb011b5..4ff9048e 100644 --- a/app/src/main/res/layout/fragment_flat_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_flat_player_playback_controls.xml @@ -23,19 +23,16 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - diff --git a/app/src/main/res/layout/fragment_full_player_controls.xml b/app/src/main/res/layout/fragment_full_player_controls.xml index 0caaa93b..a9e08e5b 100644 --- a/app/src/main/res/layout/fragment_full_player_controls.xml +++ b/app/src/main/res/layout/fragment_full_player_controls.xml @@ -89,21 +89,14 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - diff --git a/app/src/main/res/layout/fragment_gradient_controls.xml b/app/src/main/res/layout/fragment_gradient_controls.xml index 386b6511..b1d8b047 100644 --- a/app/src/main/res/layout/fragment_gradient_controls.xml +++ b/app/src/main/res/layout/fragment_gradient_controls.xml @@ -92,21 +92,14 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - @@ -145,6 +138,7 @@ android:id="@+id/playPauseButton" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="16dp" android:background="?attr/roundSelector" app:layout_constraintBottom_toTopOf="@+id/volumeFragmentContainer" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/fragment_lock_screen_playback_controls.xml b/app/src/main/res/layout/fragment_lock_screen_playback_controls.xml index f0d21198..e9fb0545 100644 --- a/app/src/main/res/layout/fragment_lock_screen_playback_controls.xml +++ b/app/src/main/res/layout/fragment_lock_screen_playback_controls.xml @@ -25,7 +25,7 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - - diff --git a/app/src/main/res/layout/fragment_peak_control_player.xml b/app/src/main/res/layout/fragment_peak_control_player.xml index 06acd141..a83259f1 100644 --- a/app/src/main/res/layout/fragment_peak_control_player.xml +++ b/app/src/main/res/layout/fragment_peak_control_player.xml @@ -34,17 +34,14 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - @@ -67,6 +64,7 @@ android:id="@+id/playPauseButton" android:layout_width="72dp" android:layout_height="72dp" + android:layout_marginTop="16dp" android:background="?attr/roundSelector" android:padding="8dp" android:scaleType="fitCenter" diff --git a/app/src/main/res/layout/fragment_plain_controls_fragment.xml b/app/src/main/res/layout/fragment_plain_controls_fragment.xml index 4aa78589..a74e7b00 100644 --- a/app/src/main/res/layout/fragment_plain_controls_fragment.xml +++ b/app/src/main/res/layout/fragment_plain_controls_fragment.xml @@ -22,17 +22,14 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - diff --git a/app/src/main/res/layout/fragment_player_playback_controls.xml b/app/src/main/res/layout/fragment_player_playback_controls.xml index 2a78b51a..13ac8b44 100755 --- a/app/src/main/res/layout/fragment_player_playback_controls.xml +++ b/app/src/main/res/layout/fragment_player_playback_controls.xml @@ -24,17 +24,13 @@ tools:ignore="RtlHardcoded,RtlSymmetry" tools:text="00:22" /> - @@ -108,8 +104,8 @@ android:ellipsize="end" android:gravity="center" android:maxLines="2" - android:paddingBottom="8dp" android:paddingHorizontal="16dp" + android:paddingBottom="8dp" android:textColor="?android:attr/textColorSecondary" android:textSize="12sp" app:layout_constraintBottom_toTopOf="@+id/playPauseButton" diff --git a/app/src/main/res/layout/fragment_volume.xml b/app/src/main/res/layout/fragment_volume.xml index dabf109a..183044d2 100755 --- a/app/src/main/res/layout/fragment_volume.xml +++ b/app/src/main/res/layout/fragment_volume.xml @@ -24,21 +24,18 @@ app:srcCompat="@drawable/ic_volume_down_white_24dp" app:tint="?attr/colorControlNormal" /> - + app:layout_constraintTop_toTopOf="@+id/volumeDown" />