Changed Seekbar with Sliders
This commit is contained in:
parent
b9f0adc9c2
commit
2786d8abed
49 changed files with 314 additions and 282 deletions
|
@ -20,7 +20,6 @@ import android.graphics.Color
|
|||
import android.graphics.PorterDuff
|
||||
import android.os.Bundle
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.SeekBar
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import code.name.monkey.retromusic.R
|
||||
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.Callback
|
||||
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.repository.RealRepository
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import com.google.android.material.slider.Slider
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -113,17 +112,15 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
|
|||
}
|
||||
|
||||
private fun setUpProgressSlider() {
|
||||
binding.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress)
|
||||
onUpdateProgressViews(
|
||||
MusicPlayerRemote.songProgressMillis,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
binding.progressSlider.addOnChangeListener { _: Slider, progress: Float, fromUser: Boolean ->
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress.toInt())
|
||||
onUpdateProgressViews(
|
||||
MusicPlayerRemote.songProgressMillis,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -249,9 +246,9 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
|
|||
}
|
||||
|
||||
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.interpolator = LinearInterpolator()
|
||||
animator.start()
|
||||
|
|
|
@ -163,6 +163,15 @@ fun SeekBar.applyColor(@ColorInt color: Int) {
|
|||
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() {
|
||||
if (materialYou) return
|
||||
val color = ThemeStore.accentColor(context)
|
||||
|
@ -301,5 +310,9 @@ inline val @receiver:ColorInt Int.lighterColor
|
|||
inline val @receiver:ColorInt Int.darkerColor
|
||||
get() = ColorUtil.darkenColor(this)
|
||||
|
||||
inline val Int.colorStateList : ColorStateList
|
||||
get() = ColorStateList.valueOf(this)
|
||||
inline val Int.colorStateList: ColorStateList
|
||||
get() = ColorStateList.valueOf(this)
|
||||
|
||||
fun @receiver:ColorInt Int.addAlpha(alpha: Float): Int {
|
||||
return ColorUtil.withAlpha(this, alpha)
|
||||
}
|
|
@ -23,7 +23,6 @@ import android.view.animation.AccelerateInterpolator
|
|||
import android.view.animation.DecelerateInterpolator
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.LayoutRes
|
||||
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.helper.MusicPlayerRemote
|
||||
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.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.google.android.material.slider.Slider
|
||||
|
||||
/**
|
||||
* Created by hemanths on 24/09/17.
|
||||
|
@ -61,7 +60,7 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
|
|||
var isSeeking = false
|
||||
private set
|
||||
|
||||
open val progressSlider: SeekBar? = null
|
||||
open val progressSlider: Slider? = null
|
||||
|
||||
abstract val shuffleButton: ImageButton
|
||||
|
||||
|
@ -78,16 +77,17 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
|
|||
private var progressAnimator: ObjectAnimator? = null
|
||||
|
||||
override fun onUpdateProgressViews(progress: Int, total: Int) {
|
||||
progressSlider?.max = total
|
||||
progressSlider?.valueTo = total.toFloat()
|
||||
|
||||
if (isSeeking) {
|
||||
progressSlider?.progress = progress
|
||||
progressSlider?.value = progress.toFloat()
|
||||
} else {
|
||||
progressAnimator = ObjectAnimator.ofInt(progressSlider, "progress", progress).apply {
|
||||
duration = SLIDER_ANIMATION_TIME
|
||||
interpolator = LinearInterpolator()
|
||||
start()
|
||||
}
|
||||
progressAnimator =
|
||||
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
|
||||
duration = SLIDER_ANIMATION_TIME
|
||||
interpolator = LinearInterpolator()
|
||||
start()
|
||||
}
|
||||
|
||||
}
|
||||
songTotalTime?.text = MusicUtil.getReadableDurationString(total.toLong())
|
||||
|
@ -95,25 +95,24 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
|
|||
}
|
||||
|
||||
private fun setUpProgressSlider() {
|
||||
progressSlider?.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
onUpdateProgressViews(
|
||||
progress,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
progressSlider?.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
onUpdateProgressViews(
|
||||
value.toInt(),
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
})
|
||||
progressSlider?.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
isSeeking = true
|
||||
progressViewUpdateHelper.stop()
|
||||
progressAnimator?.cancel()
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
isSeeking = false
|
||||
MusicPlayerRemote.seekTo(seekBar.progress)
|
||||
MusicPlayerRemote.seekTo(slider.value.toInt())
|
||||
progressViewUpdateHelper.start()
|
||||
}
|
||||
})
|
||||
|
|
|
@ -21,7 +21,6 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.SeekBar
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.fragment.app.Fragment
|
||||
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.volume.AudioVolumeObserver
|
||||
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 {
|
||||
|
||||
private var _binding: FragmentVolumeBinding? = null
|
||||
|
@ -47,7 +47,7 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
|||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
savedInstanceState: Bundle?,
|
||||
): View {
|
||||
_binding = FragmentVolumeBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
|
@ -68,15 +68,17 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum
|
|||
audioVolumeObserver?.register(AudioManager.STREAM_MUSIC, this)
|
||||
|
||||
val audioManager = audioManager
|
||||
binding.volumeSeekBar.max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
binding.volumeSeekBar.progress = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
binding.volumeSeekBar.setOnSeekBarChangeListener(this)
|
||||
binding.volumeSeekBar.valueTo =
|
||||
audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC).toFloat()
|
||||
binding.volumeSeekBar.value =
|
||||
audioManager.getStreamVolume(AudioManager.STREAM_MUSIC).toFloat()
|
||||
binding.volumeSeekBar.addOnChangeListener(this)
|
||||
}
|
||||
|
||||
override fun onAudioVolumeChanged(currentVolume: Int, maxVolume: Int) {
|
||||
if (_binding != null) {
|
||||
binding.volumeSeekBar.max = maxVolume
|
||||
binding.volumeSeekBar.progress = currentVolume
|
||||
binding.volumeSeekBar.valueTo = maxVolume.toFloat()
|
||||
binding.volumeSeekBar.value = currentVolume.toFloat()
|
||||
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
|
||||
}
|
||||
|
||||
override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) {
|
||||
override fun onValueChange(slider: Slider, value: Float, fromUser: Boolean) {
|
||||
val audioManager = audioManager
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0)
|
||||
setPauseWhenZeroVolume(i < 1)
|
||||
binding.volumeDown.setImageResource(if (i == 0) R.drawable.ic_volume_off else R.drawable.ic_volume_down)
|
||||
}
|
||||
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, value.toInt(), 0)
|
||||
setPauseWhenZeroVolume(value < 1f)
|
||||
binding.volumeDown.setImageResource(if (value == 0f) R.drawable.ic_volume_off else R.drawable.ic_volume_down)
|
||||
}
|
||||
|
||||
override fun onClick(view: View) {
|
||||
|
|
|
@ -17,7 +17,7 @@ package code.name.monkey.retromusic.fragments.player.adaptive
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -38,7 +38,7 @@ class AdaptivePlaybackControlsFragment :
|
|||
private var _binding: FragmentAdaptivePlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -19,7 +19,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
|
@ -43,7 +43,7 @@ class BlurPlaybackControlsFragment :
|
|||
private var _binding: FragmentBlurPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -18,7 +18,7 @@ import android.graphics.PorterDuff
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
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.retromusic.R
|
||||
import code.name.monkey.retromusic.databinding.FragmentCardPlayerPlaybackControlsBinding
|
||||
import code.name.monkey.retromusic.extensions.getSongInfo
|
||||
import code.name.monkey.retromusic.extensions.hide
|
||||
import code.name.monkey.retromusic.extensions.ripAlpha
|
||||
import code.name.monkey.retromusic.extensions.show
|
||||
import code.name.monkey.retromusic.extensions.*
|
||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
||||
import code.name.monkey.retromusic.fragments.base.goToAlbum
|
||||
import code.name.monkey.retromusic.fragments.base.goToArtist
|
||||
|
@ -45,7 +42,7 @@ class CardPlaybackControlsFragment :
|
|||
private var _binding: FragmentCardPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
@ -78,6 +75,9 @@ class CardPlaybackControlsFragment :
|
|||
binding.text.setOnClickListener {
|
||||
goToArtist(requireActivity())
|
||||
}
|
||||
binding.progressSlider.apply {
|
||||
setCustomThumbDrawable(R.drawable.switch_square)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSong() {
|
||||
|
|
|
@ -19,7 +19,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
import code.name.monkey.appthemehelper.util.TintHelper
|
||||
|
@ -41,7 +41,7 @@ class CardBlurPlaybackControlsFragment :
|
|||
private var _binding: FragmentCardBlurPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -25,7 +25,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.getSystemService
|
||||
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.Callback
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.ViewUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import code.name.monkey.retromusic.volume.AudioVolumeObserver
|
||||
import code.name.monkey.retromusic.volume.OnAudioVolumeChangedListener
|
||||
import com.google.android.material.slider.Slider
|
||||
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 lastRequest: GlideRequest<Drawable>? = null
|
||||
|
||||
private var progressAnimator: ObjectAnimator? = null
|
||||
var isSeeking = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
progressViewUpdateHelper = MusicProgressViewUpdateHelper(this)
|
||||
|
@ -113,11 +115,6 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
|
|||
|
||||
private fun setupViews() {
|
||||
setUpProgressSlider()
|
||||
ViewUtil.setProgressDrawable(
|
||||
binding.progressSlider,
|
||||
ThemeStore.accentColor(requireContext()),
|
||||
false
|
||||
)
|
||||
binding.volumeSeekBar.circleProgressColor = accentColor()
|
||||
binding.volumeSeekBar.circleColor = ColorUtil.withAlpha(accentColor(), 0.25f)
|
||||
setUpPlayPauseFab()
|
||||
|
@ -135,7 +132,8 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
|
|||
private fun setUpPrevNext() {
|
||||
updatePrevNextColor()
|
||||
binding.nextButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(), true))
|
||||
binding.previousButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(), false))
|
||||
binding.previousButton.setOnTouchListener(MusicSeekSkipTouchListener(requireActivity(),
|
||||
false))
|
||||
}
|
||||
|
||||
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
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress.toInt(), 0)
|
||||
}
|
||||
|
@ -288,26 +290,43 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
|
|||
|
||||
private fun setUpProgressSlider() {
|
||||
binding.progressSlider.applyColor(accentColor())
|
||||
binding.progressSlider.setOnSeekBarChangeListener(object : SimpleOnSeekbarChangeListener() {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress)
|
||||
onUpdateProgressViews(
|
||||
MusicPlayerRemote.songProgressMillis,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
val progressSlider = binding.progressSlider
|
||||
progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
onUpdateProgressViews(
|
||||
value.toInt(),
|
||||
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) {
|
||||
binding.progressSlider.max = total
|
||||
val progressSlider = binding.progressSlider
|
||||
progressSlider.valueTo = total.toFloat()
|
||||
|
||||
val animator = ObjectAnimator.ofInt(binding.progressSlider, "progress", progress)
|
||||
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
animator.interpolator = LinearInterpolator()
|
||||
animator.start()
|
||||
if (isSeeking) {
|
||||
progressSlider.value = progress.toFloat()
|
||||
} else {
|
||||
progressAnimator =
|
||||
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
|
||||
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
interpolator = LinearInterpolator()
|
||||
start()
|
||||
}
|
||||
}
|
||||
|
||||
binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong())
|
||||
binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong())
|
||||
|
|
|
@ -22,7 +22,6 @@ import android.graphics.PorterDuff
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
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.MusicProgressViewUpdateHelper
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.ViewUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior.from
|
||||
import com.google.android.material.card.MaterialCardView
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
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.draggable.RecyclerViewDragDropManager
|
||||
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager
|
||||
|
@ -83,9 +81,12 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
private var playingQueueAdapter: PlayingQueueAdapter? = null
|
||||
private lateinit var linearLayoutManager: LinearLayoutManager
|
||||
|
||||
private var progressAnimator: ObjectAnimator? = null
|
||||
var isSeeking = false
|
||||
|
||||
private val bottomSheetCallbackList = object : BottomSheetBehavior.BottomSheetCallback() {
|
||||
override fun onSlide(bottomSheet: View, slideOffset: Float) {
|
||||
mainActivity.getBottomSheetBehavior().isDraggable = false
|
||||
mainActivity.getBottomSheetBehavior().isDraggable = false
|
||||
binding.playerQueueSheet.setContentPadding(
|
||||
binding.playerQueueSheet.contentPaddingLeft,
|
||||
(slideOffset * binding.statusBar.height).toInt(),
|
||||
|
@ -99,7 +100,8 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
override fun onStateChanged(bottomSheet: View, newState: Int) {
|
||||
when (newState) {
|
||||
BottomSheetBehavior.STATE_EXPANDED,
|
||||
BottomSheetBehavior.STATE_DRAGGING -> {
|
||||
BottomSheetBehavior.STATE_DRAGGING,
|
||||
-> {
|
||||
mainActivity.getBottomSheetBehavior().isDraggable = false
|
||||
}
|
||||
BottomSheetBehavior.STATE_COLLAPSED -> {
|
||||
|
@ -161,6 +163,10 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
binding.text.setOnClickListener {
|
||||
goToArtist(requireActivity())
|
||||
}
|
||||
|
||||
binding.playerControlsContainer.progressSlider.apply {
|
||||
setCustomThumbDrawable(R.drawable.switch_square)
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideVolumeIfAvailable() {
|
||||
|
@ -286,11 +292,8 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
binding.playerControlsContainer.songCurrentProgress.setTextColor(lastPlaybackControlsColor)
|
||||
binding.playerControlsContainer.songTotalTime.setTextColor(lastPlaybackControlsColor)
|
||||
|
||||
ViewUtil.setProgressDrawable(
|
||||
binding.playerControlsContainer.progressSlider,
|
||||
color.primaryTextColor,
|
||||
true
|
||||
)
|
||||
binding.playerControlsContainer.progressSlider.applyColor(color.primaryTextColor)
|
||||
|
||||
volumeFragment?.setTintableColor(color.primaryTextColor)
|
||||
|
||||
TintHelper.setTintAuto(
|
||||
|
@ -327,16 +330,20 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
}
|
||||
|
||||
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(
|
||||
binding.playerControlsContainer.progressSlider,
|
||||
"progress",
|
||||
progress
|
||||
)
|
||||
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
animator.interpolator = LinearInterpolator()
|
||||
animator.start()
|
||||
if (isSeeking) {
|
||||
progressSlider.value = progress.toFloat()
|
||||
} else {
|
||||
progressAnimator =
|
||||
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
|
||||
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
interpolator = LinearInterpolator()
|
||||
start()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
binding.playerControlsContainer.songTotalTime.text =
|
||||
MusicUtil.getReadableDurationString(total.toLong())
|
||||
|
@ -416,16 +423,25 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
|||
}
|
||||
|
||||
private fun setUpProgressSlider() {
|
||||
binding.playerControlsContainer.progressSlider.setOnSeekBarChangeListener(object :
|
||||
SimpleOnSeekbarChangeListener() {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress)
|
||||
onUpdateProgressViews(
|
||||
MusicPlayerRemote.songProgressMillis,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
val progressSlider = binding.playerControlsContainer.progressSlider
|
||||
progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
onUpdateProgressViews(
|
||||
value.toInt(),
|
||||
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,
|
||||
oldTop: Int,
|
||||
oldRight: Int,
|
||||
oldBottom: Int
|
||||
oldBottom: Int,
|
||||
) {
|
||||
val height = binding.playerContainer.height
|
||||
val width = binding.playerContainer.width
|
||||
|
|
|
@ -22,7 +22,7 @@ import android.view.ViewAnimationUtils
|
|||
import android.view.animation.AccelerateInterpolator
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
import code.name.monkey.appthemehelper.util.TintHelper
|
||||
|
@ -46,7 +46,7 @@ class ColorPlaybackControlsFragment :
|
|||
private var _binding: FragmentColorPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -18,7 +18,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
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.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.google.android.material.slider.Slider
|
||||
import java.lang.reflect.Field
|
||||
|
||||
class FitPlaybackControlsFragment :
|
||||
AbsPlayerControlsFragment(R.layout.fragment_fit_playback_controls) {
|
||||
|
@ -40,7 +41,7 @@ class FitPlaybackControlsFragment :
|
|||
private var _binding: FragmentFitPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
@ -75,6 +76,18 @@ class FitPlaybackControlsFragment :
|
|||
binding.text.setOnClickListener {
|
||||
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() {
|
||||
|
|
|
@ -18,7 +18,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -43,7 +43,7 @@ class FlatPlaybackControlsFragment :
|
|||
private var _binding: FragmentFlatPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -23,7 +23,7 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
|
@ -62,7 +62,7 @@ class FullPlaybackControlsFragment :
|
|||
private var _binding: FragmentFullPlayerControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.graphics.drawable.AnimatedVectorDrawable
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
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.MusicProgressViewUpdateHelper
|
||||
import code.name.monkey.retromusic.helper.PlayPauseButtonOnClickHandler
|
||||
import code.name.monkey.retromusic.misc.SimpleOnSeekbarChangeListener
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import 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.draggable.RecyclerViewDragDropManager
|
||||
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 val binding get() = _binding!!
|
||||
|
||||
private var progressAnimator: ObjectAnimator? = null
|
||||
var isSeeking = false
|
||||
|
||||
private val bottomSheetCallbackList = object : BottomSheetCallback() {
|
||||
override fun onSlide(bottomSheet: View, slideOffset: Float) {
|
||||
mainActivity.getBottomSheetBehavior().isDraggable = false
|
||||
|
@ -544,30 +546,43 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
|
|||
}
|
||||
|
||||
private fun setUpProgressSlider() {
|
||||
binding.playbackControlsFragment.progressSlider.setOnSeekBarChangeListener(object :
|
||||
SimpleOnSeekbarChangeListener() {
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
if (fromUser) {
|
||||
MusicPlayerRemote.seekTo(progress)
|
||||
onUpdateProgressViews(
|
||||
MusicPlayerRemote.songProgressMillis,
|
||||
MusicPlayerRemote.songDurationMillis
|
||||
)
|
||||
}
|
||||
val progressSlider = binding.playbackControlsFragment.progressSlider
|
||||
progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
||||
if (fromUser) {
|
||||
onUpdateProgressViews(
|
||||
value.toInt(),
|
||||
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) {
|
||||
binding.playbackControlsFragment.progressSlider.max = total
|
||||
val animator = ObjectAnimator.ofInt(
|
||||
binding.playbackControlsFragment.progressSlider,
|
||||
"progress",
|
||||
progress
|
||||
)
|
||||
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
animator.interpolator = LinearInterpolator()
|
||||
animator.start()
|
||||
val progressSlider = binding.playbackControlsFragment.progressSlider
|
||||
progressSlider.valueTo = total.toFloat()
|
||||
|
||||
if (isSeeking) {
|
||||
progressSlider.value = progress.toFloat()
|
||||
} else {
|
||||
progressAnimator =
|
||||
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
|
||||
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||
interpolator = LinearInterpolator()
|
||||
start()
|
||||
}
|
||||
}
|
||||
binding.playbackControlsFragment.songTotalTime.text =
|
||||
MusicUtil.getReadableDurationString(total.toLong())
|
||||
binding.playbackControlsFragment.songCurrentProgress.text =
|
||||
|
|
|
@ -18,7 +18,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
|
@ -44,7 +44,7 @@ class LockScreenControlsFragment :
|
|||
private var _binding: FragmentLockScreenPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -18,7 +18,7 @@ import android.graphics.PorterDuff
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -44,7 +44,7 @@ class MaterialControlsFragment :
|
|||
private var _binding: FragmentMaterialPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -17,7 +17,7 @@ package code.name.monkey.retromusic.fragments.player.md3
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
|
@ -40,7 +40,7 @@ class MD3PlaybackControlsFragment :
|
|||
private var _binding: FragmentMd3PlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -18,7 +18,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -41,7 +41,7 @@ class PlayerPlaybackControlsFragment :
|
|||
private var _binding: FragmentPlayerPlaybackControlsBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -19,7 +19,7 @@ import android.graphics.PorterDuff
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import com.google.android.material.slider.Slider
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
|
@ -43,7 +43,7 @@ class PeekPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_pe
|
|||
private var _binding: FragmentPeekControlPlayerBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -18,7 +18,6 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.widget.ImageButton
|
||||
import android.widget.SeekBar
|
||||
import android.widget.TextView
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
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.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.color.MediaNotificationProcessor
|
||||
import com.google.android.material.slider.Slider
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
|
@ -46,7 +46,7 @@ class PlainPlaybackControlsFragment :
|
|||
private var _binding: FragmentPlainControlsFragmentBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override val progressSlider: SeekBar
|
||||
override val progressSlider: Slider
|
||||
get() = binding.progressSlider
|
||||
|
||||
override val shuffleButton: ImageButton
|
||||
|
|
|
@ -29,17 +29,12 @@ import androidx.core.widget.doAfterTextChanged
|
|||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.transition.TransitionManager
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.SearchAdapter
|
||||
import code.name.monkey.retromusic.databinding.FragmentSearchBinding
|
||||
import code.name.monkey.retromusic.extensions.accentColor
|
||||
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.extensions.*
|
||||
import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment
|
||||
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.ChipGroup
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
|
@ -133,7 +128,7 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search),
|
|||
|
||||
val colors = intArrayOf(
|
||||
android.R.color.transparent,
|
||||
ThemeStore.accentColor(requireContext()).addAlpha(0.5F)
|
||||
accentColor().addAlpha(0.5F)
|
||||
)
|
||||
|
||||
chips.forEach {
|
||||
|
|
|
@ -166,7 +166,7 @@ class MediaSessionCallback(
|
|||
|
||||
override fun onSkipToPrevious() {
|
||||
super.onSkipToPrevious()
|
||||
musicService.back(true)
|
||||
musicService.playPreviousSong(true)
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
|
|
|
@ -204,8 +204,14 @@ class MusicService : MediaBrowserServiceCompat(),
|
|||
private val updateFavoriteReceiver = object : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
isCurrentFavorite { isFavorite ->
|
||||
playingNotification?.updateFavorite(isFavorite)
|
||||
startForegroundOrNotify()
|
||||
if (!isForeground) {
|
||||
playingNotification?.updateMetadata(currentSong) {
|
||||
playingNotification?.setPlaying(isPlaying)
|
||||
playingNotification?.updateFavorite(isFavorite)
|
||||
startForegroundOrNotify()
|
||||
}
|
||||
}
|
||||
|
||||
appWidgetCircle.notifyChange(this@MusicService, FAVORITE_STATE_CHANGED)
|
||||
}
|
||||
}
|
||||
|
@ -676,6 +682,7 @@ class MusicService : MediaBrowserServiceCompat(),
|
|||
}
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
startForegroundOrNotify()
|
||||
if (intent != null && intent.action != null) {
|
||||
handleIntent(mediaSession, intent)
|
||||
serviceScope.launch {
|
||||
|
|
|
@ -21,6 +21,7 @@ import code.name.monkey.appthemehelper.ThemeStore
|
|||
import code.name.monkey.appthemehelper.util.ATHUtil
|
||||
import code.name.monkey.appthemehelper.util.ColorUtil
|
||||
import code.name.monkey.appthemehelper.util.NavigationViewUtil
|
||||
import code.name.monkey.retromusic.extensions.addAlpha
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import dev.chrisbanes.insetter.applyInsetter
|
||||
|
@ -69,8 +70,4 @@ class BottomNavigationBarTinted @JvmOverloads constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Int.addAlpha(alpha: Float): Int {
|
||||
return ColorUtil.withAlpha(this, alpha)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue