Changed Seekbar with Sliders

This commit is contained in:
Prathamesh More 2022-05-23 20:18:40 +05:30
parent b9f0adc9c2
commit 2786d8abed
49 changed files with 314 additions and 282 deletions

View file

@ -20,7 +20,6 @@ import android.graphics.Color
import android.graphics.PorterDuff import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
@ -36,11 +35,11 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler 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.model.Song
import code.name.monkey.retromusic.repository.RealRepository import code.name.monkey.retromusic.repository.RealRepository
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import com.google.android.material.slider.Slider
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -113,17 +112,15 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
} }
private fun setUpProgressSlider() { private fun setUpProgressSlider() {
binding.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { binding.progressSlider.addOnChangeListener { _: Slider, progress: Float, fromUser: Boolean ->
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (fromUser) { if (fromUser) {
MusicPlayerRemote.seekTo(progress) MusicPlayerRemote.seekTo(progress.toInt())
onUpdateProgressViews( onUpdateProgressViews(
MusicPlayerRemote.songProgressMillis, MusicPlayerRemote.songProgressMillis,
MusicPlayerRemote.songDurationMillis MusicPlayerRemote.songDurationMillis
) )
} }
} }
})
} }
override fun onPause() { override fun onPause() {
@ -249,9 +246,9 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
} }
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
binding.progressSlider.max = total binding.progressSlider.valueTo = total.toFloat()
val animator = ObjectAnimator.ofInt(binding.progressSlider, "progress", progress) val animator = ObjectAnimator.ofFloat(binding.progressSlider, "value", progress.toFloat())
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
animator.interpolator = LinearInterpolator() animator.interpolator = LinearInterpolator()
animator.start() animator.start()

View file

@ -163,6 +163,15 @@ fun SeekBar.applyColor(@ColorInt color: Int) {
progressBackgroundTintList = ColorStateList.valueOf(color) progressBackgroundTintList = ColorStateList.valueOf(color)
} }
fun Slider.applyColor(@ColorInt color: Int) {
ColorStateList.valueOf(color).run {
thumbTintList = this
trackActiveTintList = this
trackInactiveTintList = ColorStateList.valueOf(color.addAlpha(0.1f))
haloTintList = this
}
}
fun ExtendedFloatingActionButton.accentColor() { fun ExtendedFloatingActionButton.accentColor() {
if (materialYou) return if (materialYou) return
val color = ThemeStore.accentColor(context) val color = ThemeStore.accentColor(context)
@ -301,5 +310,9 @@ inline val @receiver:ColorInt Int.lighterColor
inline val @receiver:ColorInt Int.darkerColor inline val @receiver:ColorInt Int.darkerColor
get() = ColorUtil.darkenColor(this) get() = ColorUtil.darkenColor(this)
inline val Int.colorStateList : ColorStateList inline val Int.colorStateList: ColorStateList
get() = ColorStateList.valueOf(this) get() = ColorStateList.valueOf(this)
fun @receiver:ColorInt Int.addAlpha(alpha: Float): Int {
return ColorUtil.withAlpha(this, alpha)
}

View file

@ -23,7 +23,6 @@ import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView import android.widget.TextView
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import androidx.core.view.isVisible import androidx.core.view.isVisible
@ -35,11 +34,11 @@ import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener
import code.name.monkey.retromusic.fragments.other.VolumeFragment import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.slider.Slider
/** /**
* Created by hemanths on 24/09/17. * Created by hemanths on 24/09/17.
@ -61,7 +60,7 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
var isSeeking = false var isSeeking = false
private set private set
open val progressSlider: SeekBar? = null open val progressSlider: Slider? = null
abstract val shuffleButton: ImageButton abstract val shuffleButton: ImageButton
@ -78,12 +77,13 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
private var progressAnimator: ObjectAnimator? = null private var progressAnimator: ObjectAnimator? = null
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
progressSlider?.max = total progressSlider?.valueTo = total.toFloat()
if (isSeeking) { if (isSeeking) {
progressSlider?.progress = progress progressSlider?.value = progress.toFloat()
} else { } else {
progressAnimator = ObjectAnimator.ofInt(progressSlider, "progress", progress).apply { progressAnimator =
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
duration = SLIDER_ANIMATION_TIME duration = SLIDER_ANIMATION_TIME
interpolator = LinearInterpolator() interpolator = LinearInterpolator()
start() start()
@ -95,25 +95,24 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
} }
private fun setUpProgressSlider() { private fun setUpProgressSlider() {
progressSlider?.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { progressSlider?.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (fromUser) { if (fromUser) {
onUpdateProgressViews( onUpdateProgressViews(
progress, value.toInt(),
MusicPlayerRemote.songDurationMillis MusicPlayerRemote.songDurationMillis
) )
} }
} })
progressSlider?.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
override fun onStartTrackingTouch(seekBar: SeekBar) { override fun onStartTrackingTouch(slider: Slider) {
isSeeking = true isSeeking = true
progressViewUpdateHelper.stop() progressViewUpdateHelper.stop()
progressAnimator?.cancel() progressAnimator?.cancel()
} }
override fun onStopTrackingTouch(seekBar: SeekBar) { override fun onStopTrackingTouch(slider: Slider) {
isSeeking = false isSeeking = false
MusicPlayerRemote.seekTo(seekBar.progress) MusicPlayerRemote.seekTo(slider.value.toInt())
progressViewUpdateHelper.start() progressViewUpdateHelper.start()
} }
}) })

View file

@ -21,7 +21,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.SeekBar
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
@ -32,8 +31,9 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.AudioVolumeObserver
import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener
import com.google.android.material.slider.Slider
class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolumeChangedListener, class VolumeFragment : Fragment(), Slider.OnChangeListener, OnAudioVolumeChangedListener,
View.OnClickListener { View.OnClickListener {
private var _binding: FragmentVolumeBinding? = null private var _binding: FragmentVolumeBinding? = null
@ -47,7 +47,7 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?,
): View { ): View {
_binding = FragmentVolumeBinding.inflate(inflater, container, false) _binding = FragmentVolumeBinding.inflate(inflater, container, false)
return binding.root return binding.root
@ -68,15 +68,17 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
audioVolumeObserver?.register(AudioManager.STREAM_MUSIC, this) audioVolumeObserver?.register(AudioManager.STREAM_MUSIC, this)
val audioManager = audioManager val audioManager = audioManager
binding.volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) binding.volumeSeekBar.valueTo =
binding.volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC).toFloat()
binding.volumeSeekBar.setOnSeekBarChangeListener(this) binding.volumeSeekBar.value =
audioManager.getStreamVolume(AudioManager.STREAM_MUSIC).toFloat()
binding.volumeSeekBar.addOnChangeListener(this)
} }
override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) { override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) {
if (_binding != null) { if (_binding != null) {
binding.volumeSeekBar.max = maxVolume binding.volumeSeekBar.valueTo = maxVolume.toFloat()
binding.volumeSeekBar.progress = currentVolume binding.volumeSeekBar.value = currentVolume.toFloat()
binding.volumeDown.setImageResource(if (currentVolume == 0) R.drawable.ic_volume_off else R.drawable.ic_volume_down) binding.volumeDown.setImageResource(if (currentVolume == 0) R.drawable.ic_volume_off else R.drawable.ic_volume_down)
} }
} }
@ -87,17 +89,11 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
_binding = null _binding = null
} }
override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { override fun onValueChange(slider: Slider, value: Float, fromUser: Boolean) {
val audioManager = audioManager val audioManager = audioManager
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0) audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, value.toInt(), 0)
setPauseWhenZeroVolume(i < 1) setPauseWhenZeroVolume(value < 1f)
binding.volumeDown.setImageResource(if (i == 0) R.drawable.ic_volume_off else R.drawable.ic_volume_down) binding.volumeDown.setImageResource(if (value == 0f) R.drawable.ic_volume_off else R.drawable.ic_volume_down)
}
override fun onStartTrackingTouch(seekBar: SeekBar) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
} }
override fun onClick(view: View) { override fun onClick(view: View) {

View file

@ -17,7 +17,7 @@ package code.name.monkey.retromusic.fragments.player.adaptive
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -38,7 +38,7 @@ class AdaptivePlaybackControlsFragment :
private var _binding: FragmentAdaptivePlayerPlaybackControlsBinding? = null private var _binding: FragmentAdaptivePlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -19,7 +19,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -43,7 +43,7 @@ class BlurPlaybackControlsFragment :
private var _binding: FragmentBlurPlayerPlaybackControlsBinding? = null private var _binding: FragmentBlurPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -18,7 +18,7 @@ import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -27,10 +27,7 @@ import code.name.monkey.appthemehelper.util.MaterialValueHelper
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentCardPlayerPlaybackControlsBinding import code.name.monkey.retromusic.databinding.FragmentCardPlayerPlaybackControlsBinding
import code.name.monkey.retromusic.extensions.getSongInfo import code.name.monkey.retromusic.extensions.*
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.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist import code.name.monkey.retromusic.fragments.base.goToArtist
@ -45,7 +42,7 @@ class CardPlaybackControlsFragment :
private var _binding: FragmentCardPlayerPlaybackControlsBinding? = null private var _binding: FragmentCardPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton
@ -78,6 +75,9 @@ class CardPlaybackControlsFragment :
binding.text.setOnClickListener { binding.text.setOnClickListener {
goToArtist(requireActivity()) goToArtist(requireActivity())
} }
binding.progressSlider.apply {
setCustomThumbDrawable(R.drawable.switch_square)
}
} }
private fun updateSong() { private fun updateSong() {

View file

@ -19,7 +19,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
@ -41,7 +41,7 @@ class CardBlurPlaybackControlsFragment :
private var _binding: FragmentCardBlurPlayerPlaybackControlsBinding? = null private var _binding: FragmentCardBlurPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -25,7 +25,6 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.Animation import android.view.animation.Animation
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
@ -49,13 +48,13 @@ import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper.Callback
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler 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.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.util.ViewUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import code.name.monkey.retromusic.volume.AudioVolumeObserver import code.name.monkey.retromusic.volume.AudioVolumeObserver
import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener
import com.google.android.material.slider.Slider
import me.tankery.lib.circularseekbar.CircularSeekBar import me.tankery.lib.circularseekbar.CircularSeekBar
/** /**
@ -78,6 +77,9 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private var rotateAnimator: ObjectAnimator? = null private var rotateAnimator: ObjectAnimator? = null
private var lastRequest: GlideRequest<Drawable>? = null private var lastRequest: GlideRequest<Drawable>? = null
private var progressAnimator: ObjectAnimator? = null
var isSeeking = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
progressViewUpdateHelper = MusicProgressViewUpdateHelper(this) progressViewUpdateHelper = MusicProgressViewUpdateHelper(this)
@ -113,11 +115,6 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private fun setupViews() { private fun setupViews() {
setUpProgressSlider() setUpProgressSlider()
ViewUtil.setProgressDrawable(
binding.progressSlider,
ThemeStore.accentColor(requireContext()),
false
)
binding.volumeSeekBar.circleProgressColor = accentColor() binding.volumeSeekBar.circleProgressColor = accentColor()
binding.volumeSeekBar.circleColor = ColorUtil.withAlpha(accentColor(), 0.25f) binding.volumeSeekBar.circleColor = ColorUtil.withAlpha(accentColor(), 0.25f)
setUpPlayPauseFab() setUpPlayPauseFab()
@ -135,7 +132,8 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private fun setUpPrevNext() { private fun setUpPrevNext() {
updatePrevNextColor() updatePrevNextColor()
binding.nextButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(), true)) binding.nextButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(), true))
binding.previousButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(), false)) binding.previousButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(),
false))
} }
private fun updatePrevNextColor() { private fun updatePrevNextColor() {
@ -275,7 +273,11 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
} }
override fun onProgressChanged(circularSeekBar: CircularSeekBar?, progress: Float, fromUser: Boolean) { override fun onProgressChanged(
circularSeekBar: CircularSeekBar?,
progress: Float,
fromUser: Boolean,
) {
val audioManager = audioManager val audioManager = audioManager
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress.toInt(), 0) audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress.toInt(), 0)
} }
@ -288,26 +290,43 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
private fun setUpProgressSlider() { private fun setUpProgressSlider() {
binding.progressSlider.applyColor(accentColor()) binding.progressSlider.applyColor(accentColor())
binding.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() { val progressSlider = binding.progressSlider
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
if (fromUser) { if (fromUser) {
MusicPlayerRemote.seekTo(progress)
onUpdateProgressViews( onUpdateProgressViews(
MusicPlayerRemote.songProgressMillis, value.toInt(),
MusicPlayerRemote.songDurationMillis MusicPlayerRemote.songDurationMillis
) )
} }
})
progressSlider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
override fun onStartTrackingTouch(slider: Slider) {
isSeeking = true
progressViewUpdateHelper.stop()
}
override fun onStopTrackingTouch(slider: Slider) {
isSeeking = false
MusicPlayerRemote.seekTo(slider.value.toInt())
progressViewUpdateHelper.start()
} }
}) })
} }
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
binding.progressSlider.max = total val progressSlider = binding.progressSlider
progressSlider.valueTo = total.toFloat()
val animator = ObjectAnimator.ofInt(binding.progressSlider, "progress", progress) if (isSeeking) {
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME progressSlider.value = progress.toFloat()
animator.interpolator = LinearInterpolator() } else {
animator.start() progressAnimator =
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
interpolator = LinearInterpolator()
start()
}
}
binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong())
binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong())

View file

@ -22,7 +22,6 @@ import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.commit import androidx.fragment.app.commit
@ -45,18 +44,17 @@ import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler 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.model.Song
import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.ViewUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.from import com.google.android.material.bottomsheet.BottomSheetBehavior.from
import com.google.android.material.card.MaterialCardView import com.google.android.material.card.MaterialCardView
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.shape.ShapeAppearanceModel import com.google.android.material.shape.ShapeAppearanceModel
import com.google.android.material.slider.Slider
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
@ -83,6 +81,9 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
private var playingQueueAdapter: PlayingQueueAdapter? = null private var playingQueueAdapter: PlayingQueueAdapter? = null
private lateinit var linearLayoutManager: LinearLayoutManager private lateinit var linearLayoutManager: LinearLayoutManager
private var progressAnimator: ObjectAnimator? = null
var isSeeking = false
private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() { private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(bottomSheet: View, slideOffset: Float) { override fun onSlide(bottomSheet: View, slideOffset: Float) {
mainActivity.getBottomSheetBehavior().isDraggable = false mainActivity.getBottomSheetBehavior().isDraggable = false
@ -99,7 +100,8 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
override fun onStateChanged(bottomSheet: View, newState: Int) { override fun onStateChanged(bottomSheet: View, newState: Int) {
when (newState) { when (newState) {
BottomSheetBehavior.STATE_EXPANDED, BottomSheetBehavior.STATE_EXPANDED,
BottomSheetBehavior.STATE_DRAGGING -> { BottomSheetBehavior.STATE_DRAGGING,
-> {
mainActivity.getBottomSheetBehavior().isDraggable = false mainActivity.getBottomSheetBehavior().isDraggable = false
} }
BottomSheetBehavior.STATE_COLLAPSED -> { BottomSheetBehavior.STATE_COLLAPSED -> {
@ -161,6 +163,10 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
binding.text.setOnClickListener { binding.text.setOnClickListener {
goToArtist(requireActivity()) goToArtist(requireActivity())
} }
binding.playerControlsContainer.progressSlider.apply {
setCustomThumbDrawable(R.drawable.switch_square)
}
} }
private fun hideVolumeIfAvailable() { private fun hideVolumeIfAvailable() {
@ -286,11 +292,8 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
binding.playerControlsContainer.songCurrentProgress.setTextColor(lastPlaybackControlsColor) binding.playerControlsContainer.songCurrentProgress.setTextColor(lastPlaybackControlsColor)
binding.playerControlsContainer.songTotalTime.setTextColor(lastPlaybackControlsColor) binding.playerControlsContainer.songTotalTime.setTextColor(lastPlaybackControlsColor)
ViewUtil.setProgressDrawable( binding.playerControlsContainer.progressSlider.applyColor(color.primaryTextColor)
binding.playerControlsContainer.progressSlider,
color.primaryTextColor,
true
)
volumeFragment?.setTintableColor(color.primaryTextColor) volumeFragment?.setTintableColor(color.primaryTextColor)
TintHelper.setTintAuto( TintHelper.setTintAuto(
@ -327,16 +330,20 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
} }
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
binding.playerControlsContainer.progressSlider.max = total val progressSlider = binding.playerControlsContainer.progressSlider
progressSlider.valueTo = total.toFloat()
val animator = ObjectAnimator.ofInt( if (isSeeking) {
binding.playerControlsContainer.progressSlider, progressSlider.value = progress.toFloat()
"progress", } else {
progress progressAnimator =
) ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
animator.interpolator = LinearInterpolator() interpolator = LinearInterpolator()
animator.start() start()
}
}
binding.playerControlsContainer.songTotalTime.text = binding.playerControlsContainer.songTotalTime.text =
MusicUtil.getReadableDurationString(total.toLong()) MusicUtil.getReadableDurationString(total.toLong())
@ -416,16 +423,25 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
} }
private fun setUpProgressSlider() { private fun setUpProgressSlider() {
binding.playerControlsContainer.progressSlider.setOnSeekBarChangeListener(object : val progressSlider = binding.playerControlsContainer.progressSlider
SimpleOnSeekbarChangeListener() { progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (fromUser) { if (fromUser) {
MusicPlayerRemote.seekTo(progress)
onUpdateProgressViews( onUpdateProgressViews(
MusicPlayerRemote.songProgressMillis, value.toInt(),
MusicPlayerRemote.songDurationMillis MusicPlayerRemote.songDurationMillis
) )
} }
})
progressSlider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
override fun onStartTrackingTouch(slider: Slider) {
isSeeking = true
progressViewUpdateHelper.stop()
}
override fun onStopTrackingTouch(slider: Slider) {
isSeeking = false
MusicPlayerRemote.seekTo(slider.value.toInt())
progressViewUpdateHelper.start()
} }
}) })
} }
@ -537,7 +553,7 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
oldLeft: Int, oldLeft: Int,
oldTop: Int, oldTop: Int,
oldRight: Int, oldRight: Int,
oldBottom: Int oldBottom: Int,
) { ) {
val height = binding.playerContainer.height val height = binding.playerContainer.height
val width = binding.playerContainer.width val width = binding.playerContainer.width

View file

@ -22,7 +22,7 @@ import android.view.ViewAnimationUtils
import android.view.animation.AccelerateInterpolator import android.view.animation.AccelerateInterpolator
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.appthemehelper.util.TintHelper
@ -46,7 +46,7 @@ class ColorPlaybackControlsFragment :
private var _binding: FragmentColorPlayerPlaybackControlsBinding? = null private var _binding: FragmentColorPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -18,7 +18,6 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -33,6 +32,8 @@ import code.name.monkey.retromusic.fragments.base.goToArtist
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.slider.Slider
import java.lang.reflect.Field
class FitPlaybackControlsFragment : class FitPlaybackControlsFragment :
AbsPlayerControlsFragment(R.layout.fragment_fit_playback_controls) { AbsPlayerControlsFragment(R.layout.fragment_fit_playback_controls) {
@ -40,7 +41,7 @@ class FitPlaybackControlsFragment :
private var _binding: FragmentFitPlaybackControlsBinding? = null private var _binding: FragmentFitPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton
@ -75,6 +76,18 @@ class FitPlaybackControlsFragment :
binding.text.setOnClickListener { binding.text.setOnClickListener {
goToArtist(requireActivity()) goToArtist(requireActivity())
} }
binding.progressSlider.apply {
setCustomThumbDrawable(R.drawable.switch_square)
}
val field: Field = Slider::class.java.superclass.getDeclaredField("trackSidePadding")
field.isAccessible = true
field.set(binding.progressSlider, 0)
binding.progressSlider.invalidate()
} }
private fun updateSong() { private fun updateSong() {

View file

@ -18,7 +18,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -43,7 +43,7 @@ class FlatPlaybackControlsFragment :
private var _binding: FragmentFlatPlayerPlaybackControlsBinding? = null private var _binding: FragmentFlatPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -23,7 +23,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
@ -62,7 +62,7 @@ class FullPlaybackControlsFragment :
private var _binding: FragmentFullPlayerControlsBinding? = null private var _binding: FragmentFullPlayerControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -23,7 +23,6 @@ import android.graphics.drawable.AnimatedVectorDrawable
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import android.widget.SeekBar
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
@ -50,13 +49,13 @@ import code.name.monkey.retromusic.fragments.other.VolumeFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler 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.service.MusicService
import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetBehavior.* import com.google.android.material.bottomsheet.BottomSheetBehavior.*
import com.google.android.material.slider.Slider
import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator import com.h6ah4i.android.widget.advrecyclerview.animator.DraggableItemAnimator
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
@ -85,6 +84,9 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
private var _binding: FragmentGradientPlayerBinding? = null private var _binding: FragmentGradientPlayerBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private var progressAnimator: ObjectAnimator? = null
var isSeeking = false
private val bottomSheetCallbackList = object : BottomSheetCallback() { private val bottomSheetCallbackList = object : BottomSheetCallback() {
override fun onSlide(bottomSheet: View, slideOffset: Float) { override fun onSlide(bottomSheet: View, slideOffset: Float) {
mainActivity.getBottomSheetBehavior().isDraggable = false mainActivity.getBottomSheetBehavior().isDraggable = false
@ -544,30 +546,43 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
} }
private fun setUpProgressSlider() { private fun setUpProgressSlider() {
binding.playbackControlsFragment.progressSlider.setOnSeekBarChangeListener(object : val progressSlider = binding.playbackControlsFragment.progressSlider
SimpleOnSeekbarChangeListener() { progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
if (fromUser) { if (fromUser) {
MusicPlayerRemote.seekTo(progress)
onUpdateProgressViews( onUpdateProgressViews(
MusicPlayerRemote.songProgressMillis, value.toInt(),
MusicPlayerRemote.songDurationMillis MusicPlayerRemote.songDurationMillis
) )
} }
})
progressSlider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
override fun onStartTrackingTouch(slider: Slider) {
isSeeking = true
progressViewUpdateHelper.stop()
}
override fun onStopTrackingTouch(slider: Slider) {
isSeeking = false
MusicPlayerRemote.seekTo(slider.value.toInt())
progressViewUpdateHelper.start()
} }
}) })
} }
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
binding.playbackControlsFragment.progressSlider.max = total val progressSlider = binding.playbackControlsFragment.progressSlider
val animator = ObjectAnimator.ofInt( progressSlider.valueTo = total.toFloat()
binding.playbackControlsFragment.progressSlider,
"progress", if (isSeeking) {
progress progressSlider.value = progress.toFloat()
) } else {
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME progressAnimator =
animator.interpolator = LinearInterpolator() ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
animator.start() duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
interpolator = LinearInterpolator()
start()
}
}
binding.playbackControlsFragment.songTotalTime.text = binding.playbackControlsFragment.songTotalTime.text =
MusicUtil.getReadableDurationString(total.toLong()) MusicUtil.getReadableDurationString(total.toLong())
binding.playbackControlsFragment.songCurrentProgress.text = binding.playbackControlsFragment.songCurrentProgress.text =

View file

@ -18,7 +18,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -44,7 +44,7 @@ class LockScreenControlsFragment :
private var _binding: FragmentLockScreenPlaybackControlsBinding? = null private var _binding: FragmentLockScreenPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -18,7 +18,7 @@ import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -44,7 +44,7 @@ class MaterialControlsFragment :
private var _binding: FragmentMaterialPlaybackControlsBinding? = null private var _binding: FragmentMaterialPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -17,7 +17,7 @@ package code.name.monkey.retromusic.fragments.player.md3
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
@ -40,7 +40,7 @@ class MD3PlaybackControlsFragment :
private var _binding: FragmentMd3PlayerPlaybackControlsBinding? = null private var _binding: FragmentMd3PlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -18,7 +18,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -41,7 +41,7 @@ class PlayerPlaybackControlsFragment :
private var _binding: FragmentPlayerPlaybackControlsBinding? = null private var _binding: FragmentPlayerPlaybackControlsBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -19,7 +19,7 @@ import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar import com.google.android.material.slider.Slider
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -43,7 +43,7 @@ class PeekPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_pe
private var _binding: FragmentPeekControlPlayerBinding? = null private var _binding: FragmentPeekControlPlayerBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -18,7 +18,6 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.DecelerateInterpolator import android.view.animation.DecelerateInterpolator
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.SeekBar
import android.widget.TextView import android.widget.TextView
import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
@ -35,6 +34,7 @@ import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicPlayerRemote
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
import com.google.android.material.slider.Slider
/** /**
* @author Hemanth S (h4h13). * @author Hemanth S (h4h13).
@ -46,7 +46,7 @@ class PlainPlaybackControlsFragment :
private var _binding: FragmentPlainControlsFragmentBinding? = null private var _binding: FragmentPlainControlsFragmentBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
override val progressSlider: SeekBar override val progressSlider: Slider
get() = binding.progressSlider get() = binding.progressSlider
override val shuffleButton: ImageButton override val shuffleButton: ImageButton

View file

@ -29,17 +29,12 @@ import androidx.core.widget.doAfterTextChanged
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.transition.TransitionManager import androidx.transition.TransitionManager
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.SearchAdapter import code.name.monkey.retromusic.adapter.SearchAdapter
import code.name.monkey.retromusic.databinding.FragmentSearchBinding import code.name.monkey.retromusic.databinding.FragmentSearchBinding
import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.extensions.dipToPix
import code.name.monkey.retromusic.extensions.focusAndShowKeyboard
import code.name.monkey.retromusic.extensions.showToast
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.views.addAlpha
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
@ -133,7 +128,7 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search),
val colors = intArrayOf( val colors = intArrayOf(
android.R.color.transparent, android.R.color.transparent,
ThemeStore.accentColor(requireContext()).addAlpha(0.5F) accentColor().addAlpha(0.5F)
) )
chips.forEach { chips.forEach {

View file

@ -166,7 +166,7 @@ class MediaSessionCallback(
override fun onSkipToPrevious() { override fun onSkipToPrevious() {
super.onSkipToPrevious() super.onSkipToPrevious()
musicService.back(true) musicService.playPreviousSong(true)
} }
override fun onStop() { override fun onStop() {

View file

@ -204,8 +204,14 @@ class MusicService : MediaBrowserServiceCompat(),
private val updateFavoriteReceiver = object : BroadcastReceiver() { private val updateFavoriteReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
isCurrentFavorite { isFavorite -> isCurrentFavorite { isFavorite ->
if (!isForeground) {
playingNotification?.updateMetadata(currentSong) {
playingNotification?.setPlaying(isPlaying)
playingNotification?.updateFavorite(isFavorite) playingNotification?.updateFavorite(isFavorite)
startForegroundOrNotify() startForegroundOrNotify()
}
}
appWidgetCircle.notifyChange(this@MusicService, FAVORITE_STATE_CHANGED) appWidgetCircle.notifyChange(this@MusicService, FAVORITE_STATE_CHANGED)
} }
} }
@ -676,6 +682,7 @@ class MusicService : MediaBrowserServiceCompat(),
} }
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForegroundOrNotify()
if (intent != null && intent.action != null) { if (intent != null && intent.action != null) {
handleIntent(mediaSession, intent) handleIntent(mediaSession, intent)
serviceScope.launch { serviceScope.launch {

View file

@ -21,6 +21,7 @@ import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ColorUtil
import code.name.monkey.appthemehelper.util.NavigationViewUtil import code.name.monkey.appthemehelper.util.NavigationViewUtil
import code.name.monkey.retromusic.extensions.addAlpha
import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import dev.chrisbanes.insetter.applyInsetter import dev.chrisbanes.insetter.applyInsetter
@ -70,7 +71,3 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
} }
} }
} }
fun Int.addAlpha(alpha: Float): Int {
return ColorUtil.withAlpha(this, alpha)
}

View file

@ -4,6 +4,6 @@
android:viewportWidth="24" android:viewportWidth="24"
android:viewportHeight="24"> android:viewportHeight="24">
<path <path
android:fillColor="#FF000000" android:fillColor="#FFF"
android:pathData="M11.975,19.95Q13.3,19.95 14.513,19.538Q15.725,19.125 16.775,18.325Q15.225,17.75 13.613,16.575Q12,15.4 10.812,13.662Q9.625,11.925 9.1,9.65Q8.575,7.375 9.15,4.65Q6.85,5.525 5.45,7.525Q4.05,9.525 4.05,12Q4.05,15.325 6.35,17.637Q8.65,19.95 11.975,19.95ZM11.975,22.225Q9.85,22.225 7.988,21.425Q6.125,20.625 4.75,19.25Q3.375,17.875 2.575,16Q1.775,14.125 1.775,12Q1.775,8.125 4.213,5.325Q6.65,2.525 10.6,1.95Q11.375,1.825 11.725,2.325Q12.075,2.825 11.775,3.65Q11,5.8 11.2,7.912Q11.4,10.025 12.387,11.787Q13.375,13.55 15.062,14.825Q16.75,16.1 18.975,16.575Q19.85,16.75 20.1,17.3Q20.35,17.85 19.85,18.45Q18.4,20.225 16.375,21.225Q14.35,22.225 11.975,22.225ZM10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Z"/> android:pathData="M11.975,19.95Q13.3,19.95 14.513,19.538Q15.725,19.125 16.775,18.325Q15.225,17.75 13.613,16.575Q12,15.4 10.812,13.662Q9.625,11.925 9.1,9.65Q8.575,7.375 9.15,4.65Q6.85,5.525 5.45,7.525Q4.05,9.525 4.05,12Q4.05,15.325 6.35,17.637Q8.65,19.95 11.975,19.95ZM11.975,22.225Q9.85,22.225 7.988,21.425Q6.125,20.625 4.75,19.25Q3.375,17.875 2.575,16Q1.775,14.125 1.775,12Q1.775,8.125 4.213,5.325Q6.65,2.525 10.6,1.95Q11.375,1.825 11.725,2.325Q12.075,2.825 11.775,3.65Q11,5.8 11.2,7.912Q11.4,10.025 12.387,11.787Q13.375,13.55 15.062,14.825Q16.75,16.1 18.975,16.575Q19.85,16.75 20.1,17.3Q20.35,17.85 19.85,18.45Q18.4,20.225 16.375,21.225Q14.35,22.225 11.975,22.225ZM10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Q10.425,12.3 10.425,12.3Z"/>
</vector> </vector>

View file

@ -172,14 +172,12 @@
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="8"
android:maxHeight="3dp" android:maxHeight="3dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
android:progressTint="@color/md_white_1000" android:progressTint="@color/md_white_1000"
android:splitTrack="false" android:splitTrack="false"
@ -199,7 +197,6 @@
android:textColor="@color/md_white_1000" android:textColor="@color/md_white_1000"
app:layout_constraintBottom_toTopOf="@id/playPauseButton" app:layout_constraintBottom_toTopOf="@id/playPauseButton"
app:layout_constraintStart_toStartOf="@id/repeatButton" app:layout_constraintStart_toStartOf="@id/repeatButton"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -211,7 +208,6 @@
android:textColor="@color/md_white_1000" android:textColor="@color/md_white_1000"
app:layout_constraintBottom_toTopOf="@id/playPauseButton" app:layout_constraintBottom_toTopOf="@id/playPauseButton"
app:layout_constraintEnd_toEndOf="@id/shuffleButton" app:layout_constraintEnd_toEndOf="@id/shuffleButton"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -178,11 +178,11 @@
app:layout_constraintTop_toBottomOf="@+id/titleContainer" app:layout_constraintTop_toBottomOf="@+id/titleContainer"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
app:layout_constraintBottom_toTopOf="@id/songInfo" app:layout_constraintBottom_toTopOf="@id/songInfo"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -202,7 +202,6 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/progressSlider" app:layout_constraintStart_toEndOf="@id/progressSlider"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -219,7 +218,6 @@
app:layout_constraintEnd_toStartOf="@id/progressSlider" app:layout_constraintEnd_toStartOf="@id/progressSlider"
app:layout_constraintStart_toEndOf="@id/guideline" app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />

View file

@ -177,17 +177,12 @@
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/Widget.MaterialComponents.LinearProgressIndicator"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="3dp" android:maxHeight="3dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek"
android:progressTint="@color/md_white_1000"
android:splitTrack="false"
android:thumb="@drawable/switch_thumb_material"
app:layout_constraintBottom_toTopOf="@id/songCurrentProgress" app:layout_constraintBottom_toTopOf="@id/songCurrentProgress"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -202,7 +197,6 @@
android:textColor="@color/md_white_1000" android:textColor="@color/md_white_1000"
app:layout_constraintBottom_toTopOf="@id/playPauseButton" app:layout_constraintBottom_toTopOf="@id/playPauseButton"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -214,7 +208,6 @@
android:textColor="@color/md_white_1000" android:textColor="@color/md_white_1000"
app:layout_constraintBottom_toTopOf="@id/playPauseButton" app:layout_constraintBottom_toTopOf="@id/playPauseButton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -4,8 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
tools:ignore="MissingPrefix">
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/songCurrentProgress" android:id="@+id/songCurrentProgress"
@ -19,16 +18,14 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/Widget.Retro.Slider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding"
android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -45,7 +42,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton

View file

@ -33,15 +33,14 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
android:splitTrack="false" android:splitTrack="false"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
@ -60,7 +59,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView

View file

@ -48,12 +48,12 @@
tools:text="22.00" /> tools:text="22.00" />
</LinearLayout> </LinearLayout>
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp" android:paddingEnd="20dp"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"

View file

@ -26,24 +26,25 @@
android:textSize="12sp" android:textSize="12sp"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/MusicProgressSlider" style="@style/Widget.Retro.Slider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" app:haloRadius="0dp"
android:paddingVertical="@dimen/seekbar_padding" /> app:trackHeight="20dp"
android:layout_weight="1"/>
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/songTotalTime" android:id="@+id/songTotalTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center_vertical|end" android:gravity="center_vertical|end"
android:paddingRight="8dp" android:paddingEnd="8dp"
android:paddingStart="0dp"
android:singleLine="true" android:singleLine="true"
android:textColor="?colorOnSecondary" android:textColor="?colorOnSecondary"
android:textSize="12sp" android:textSize="12sp"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
</LinearLayout> </LinearLayout>

View file

@ -169,11 +169,11 @@
app:layout_constraintTop_toBottomOf="@+id/volumeSeekBar" /> app:layout_constraintTop_toBottomOf="@+id/volumeSeekBar" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
app:layout_constraintBottom_toTopOf="@+id/songInfo" app:layout_constraintBottom_toTopOf="@+id/songInfo"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -190,7 +190,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -204,7 +203,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView

View file

@ -44,14 +44,13 @@
tools:ignore="RtlHardcoded,RtlSymmetry" tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/MusicProgressSlider" style="@style/Widget.Retro.Slider"
android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_toLeftOf="@id/songTotalTime" android:layout_toStartOf="@id/songTotalTime"
android:layout_toRightOf="@id/songCurrentProgress" android:layout_toEndOf="@id/songCurrentProgress" />
android:paddingVertical="@dimen/seekbar_padding"
tools:ignore="RtlHardcoded,UnusedAttribute" />
</RelativeLayout> </RelativeLayout>

View file

@ -19,16 +19,15 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -48,7 +47,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<LinearLayout <LinearLayout

View file

@ -21,40 +21,42 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:gravity="center_vertical|left|end"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="0dp"
android:singleLine="true" android:singleLine="true"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
style="@style/MusicProgressSlider" style="@style/Widget.Retro.Slider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="0dp"
android:paddingVertical="@dimen/seekbar_padding" android:foregroundGravity="center"
android:padding="0dp"
app:haloRadius="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
tools:ignore="RtlHardcoded,UnusedAttribute" /> app:layout_constraintTop_toTopOf="parent"
app:trackHeight="@dimen/progress_container_height" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/songTotalTime" android:id="@+id/songTotalTime"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical|right|end"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:paddingStart="0dp"
android:singleLine="true" android:singleLine="true"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -165,7 +167,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:background="?attr/roundSelector"
app:layout_constraintBottom_toTopOf="@+id/volumeFragmentContainer" app:layout_constraintBottom_toTopOf="@+id/volumeFragmentContainer"
app:layout_constraintEnd_toStartOf="@+id/nextButton" app:layout_constraintEnd_toStartOf="@+id/nextButton"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"

View file

@ -19,16 +19,14 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingVertical="@dimen/seekbar_padding" app:thumbRadius="8dp"
android:splitTrack="false" style="@style/Widget.Retro.Slider"
android:thumb="@drawable/switch_square"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@ -46,7 +44,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />

View file

@ -90,16 +90,15 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -120,7 +119,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />

View file

@ -93,15 +93,14 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
app:layout_constraintTop_toBottomOf="@id/titleContainer" app:layout_constraintTop_toBottomOf="@id/titleContainer"
@ -121,7 +120,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />

View file

@ -21,16 +21,15 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -53,7 +52,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<LinearLayout <LinearLayout

View file

@ -20,16 +20,15 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -49,7 +48,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />

View file

@ -21,10 +21,9 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -49,7 +48,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<LinearLayout <LinearLayout

View file

@ -31,16 +31,15 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
@ -60,7 +59,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton

View file

@ -19,10 +19,9 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -33,7 +32,7 @@
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded,UnusedAttribute" tools:ignore="RtlHardcoded,UnusedAttribute"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
tools:progress="20" /> tools:progress="20" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -48,7 +47,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/progressSlider" app:layout_constraintTop_toTopOf="@+id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatImageButton <androidx.appcompat.widget.AppCompatImageButton

View file

@ -66,11 +66,12 @@
android:id="@+id/playerToolbar" android:id="@+id/playerToolbar"
style="@style/Toolbar" style="@style/Toolbar"
android:layout_gravity="bottom" android:layout_gravity="bottom"
app:title="@null"
tools:menu="@menu/menu_player"
android:navigationIcon="@drawable/ic_keyboard_arrow_down_black" android:navigationIcon="@drawable/ic_keyboard_arrow_down_black"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/playbackControlsFragment" app:layout_constraintTop_toBottomOf="@id/playbackControlsFragment" />
app:navigationIcon="@drawable/ic_keyboard_arrow_down_black" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -19,16 +19,14 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/progressSlider" app:layout_constraintTop_toTopOf="@id/progressSlider"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/progressSlider" android:id="@+id/progressSlider"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintEnd_toStartOf="@id/songTotalTime" app:layout_constraintEnd_toStartOf="@id/songTotalTime"
app:layout_constraintStart_toEndOf="@id/songCurrentProgress" app:layout_constraintStart_toEndOf="@id/songCurrentProgress"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@ -47,7 +45,6 @@
app:layout_constraintBottom_toBottomOf="@+id/progressSlider" app:layout_constraintBottom_toBottomOf="@+id/progressSlider"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="@tools:sample/date/hhmmss" /> tools:text="@tools:sample/date/hhmmss" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView

View file

@ -23,13 +23,13 @@
app:srcCompat="@drawable/ic_volume_down" app:srcCompat="@drawable/ic_volume_down"
app:tint="?attr/colorControlNormal" /> app:tint="?attr/colorControlNormal" />
<androidx.appcompat.widget.AppCompatSeekBar <com.google.android.material.slider.Slider
android:id="@+id/volumeSeekBar" android:id="@+id/volumeSeekBar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:maxHeight="2dp" android:maxHeight="2dp"
android:paddingVertical="@dimen/seekbar_padding" style="@style/Widget.Retro.Slider"
android:progressDrawable="@drawable/color_progress_seek" android:progressDrawable="@drawable/color_progress_seek"
app:layout_constraintBottom_toBottomOf="@+id/volumeDown" app:layout_constraintBottom_toBottomOf="@+id/volumeDown"
app:layout_constraintEnd_toStartOf="@+id/volumeUp" app:layout_constraintEnd_toStartOf="@+id/volumeUp"

View file

@ -258,4 +258,10 @@
<style name="ShapeAppearance.Material3.Circle" parent=""> <style name="ShapeAppearance.Material3.Circle" parent="">
<item name="cornerSize">50%</item> <item name="cornerSize">50%</item>
</style> </style>
<style name="Widget.Retro.Slider" parent="Widget.Material3.Slider">
<item name="labelBehavior">gone</item>
<item name="thumbRadius">6dp</item>
<item name="haloRadius">18dp</item>
</style>
</resources> </resources>