Reverted to SeekBars for Card, Classic, Fit and Flat now playing theme
This commit is contained in:
parent
f916a826b5
commit
ca39b928bb
17 changed files with 136 additions and 137 deletions
|
@ -277,7 +277,6 @@ abstract class AbsTagEditorActivity<VB : ViewBinding> : AbsBaseActivity() {
|
||||||
scaleY = 0f
|
scaleY = 0f
|
||||||
isEnabled = false
|
isEnabled = false
|
||||||
setOnClickListener { save() }
|
setOnClickListener { save() }
|
||||||
TintHelper.setTintAuto(this, ThemeStore.accentColor(this@AbsTagEditorActivity), true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ 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
|
||||||
|
@ -57,11 +58,12 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
|
||||||
|
|
||||||
var lastDisabledPlaybackControlsColor: Int = 0
|
var lastDisabledPlaybackControlsColor: Int = 0
|
||||||
|
|
||||||
var isSeeking = false
|
private var isSeeking = false
|
||||||
private set
|
|
||||||
|
|
||||||
open val progressSlider: Slider? = null
|
open val progressSlider: Slider? = null
|
||||||
|
|
||||||
|
open val seekBar: SeekBar? = null
|
||||||
|
|
||||||
abstract val shuffleButton: ImageButton
|
abstract val shuffleButton: ImageButton
|
||||||
|
|
||||||
abstract val repeatButton: ImageButton
|
abstract val repeatButton: ImageButton
|
||||||
|
@ -77,6 +79,7 @@ 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) {
|
||||||
|
if (seekBar == null) {
|
||||||
progressSlider?.valueTo = total.toFloat()
|
progressSlider?.valueTo = total.toFloat()
|
||||||
|
|
||||||
if (isSeeking) {
|
if (isSeeking) {
|
||||||
|
@ -90,33 +93,71 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
seekBar?.max = total
|
||||||
|
|
||||||
|
if (isSeeking) {
|
||||||
|
seekBar?.progress = progress
|
||||||
|
} else {
|
||||||
|
progressAnimator =
|
||||||
|
ObjectAnimator.ofInt(seekBar, "progress", progress).apply {
|
||||||
|
duration = SLIDER_ANIMATION_TIME
|
||||||
|
interpolator = LinearInterpolator()
|
||||||
|
start()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
songTotalTime?.text = MusicUtil.getReadableDurationString(total.toLong())
|
songTotalTime?.text = MusicUtil.getReadableDurationString(total.toLong())
|
||||||
songCurrentProgress?.text = MusicUtil.getReadableDurationString(progress.toLong())
|
songCurrentProgress?.text = MusicUtil.getReadableDurationString(progress.toLong())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpProgressSlider() {
|
private fun setUpProgressSlider() {
|
||||||
progressSlider?.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
progressSlider?.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
||||||
if (fromUser) {
|
onProgressChange(value.toInt(), fromUser)
|
||||||
onUpdateProgressViews(
|
|
||||||
value.toInt(),
|
|
||||||
MusicPlayerRemote.songDurationMillis
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
progressSlider?.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
progressSlider?.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||||
override fun onStartTrackingTouch(slider: Slider) {
|
override fun onStartTrackingTouch(slider: Slider) {
|
||||||
|
onStartTrackingTouch()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStopTrackingTouch(slider: Slider) {
|
||||||
|
onStopTrackingTouch(slider.value.toInt())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
seekBar?.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
|
||||||
|
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
|
||||||
|
onProgressChange(progress, fromUser)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStartTrackingTouch(seekBar: SeekBar?) {
|
||||||
|
onStartTrackingTouch()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStopTrackingTouch(seekBar: SeekBar?) {
|
||||||
|
onStopTrackingTouch(seekBar?.progress ?: 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun onProgressChange(value: Int, fromUser: Boolean) {
|
||||||
|
if (fromUser) {
|
||||||
|
onUpdateProgressViews(value, MusicPlayerRemote.songDurationMillis)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun onStartTrackingTouch() {
|
||||||
isSeeking = true
|
isSeeking = true
|
||||||
progressViewUpdateHelper.stop()
|
progressViewUpdateHelper.stop()
|
||||||
progressAnimator?.cancel()
|
progressAnimator?.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStopTrackingTouch(slider: Slider) {
|
private fun onStopTrackingTouch(value: Int) {
|
||||||
isSeeking = false
|
isSeeking = false
|
||||||
MusicPlayerRemote.seekTo(slider.value.toInt())
|
MusicPlayerRemote.seekTo(value)
|
||||||
progressViewUpdateHelper.start()
|
progressViewUpdateHelper.start()
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper
|
private lateinit var progressViewUpdateHelper: MusicProgressViewUpdateHelper
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ class AdaptivePlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext())
|
accentColor()
|
||||||
}.ripAlpha()
|
}.ripAlpha()
|
||||||
|
|
||||||
TintHelper.setTintAuto(
|
TintHelper.setTintAuto(
|
||||||
|
|
|
@ -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 com.google.android.material.slider.Slider
|
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
|
||||||
|
@ -42,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: Slider
|
override val seekBar: SeekBar
|
||||||
get() = binding.progressSlider
|
get() = binding.progressSlider
|
||||||
|
|
||||||
override val shuffleButton: ImageButton
|
override val shuffleButton: ImageButton
|
||||||
|
@ -75,9 +75,6 @@ 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() {
|
||||||
|
@ -138,7 +135,7 @@ class CardPlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext()).ripAlpha()
|
accentColor().ripAlpha()
|
||||||
}
|
}
|
||||||
binding.image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN)
|
binding.image.setColorFilter(colorFinal, PorterDuff.Mode.SRC_IN)
|
||||||
TintHelper.setTintAuto(
|
TintHelper.setTintAuto(
|
||||||
|
|
|
@ -137,7 +137,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updatePrevNextColor() {
|
private fun updatePrevNextColor() {
|
||||||
val accentColor = ThemeStore.accentColor(requireContext())
|
val accentColor = accentColor()
|
||||||
binding.nextButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN)
|
binding.nextButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN)
|
||||||
binding.previousButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN)
|
binding.previousButton.setColorFilter(accentColor, PorterDuff.Mode.SRC_IN)
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
|
||||||
private fun setUpPlayPauseFab() {
|
private fun setUpPlayPauseFab() {
|
||||||
TintHelper.setTintAuto(
|
TintHelper.setTintAuto(
|
||||||
binding.playPauseButton,
|
binding.playPauseButton,
|
||||||
ThemeStore.accentColor(requireContext()),
|
accentColor(),
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
binding.playPauseButton.setOnClickListener(PlayPauseButtonOnClickHandler())
|
binding.playPauseButton.setOnClickListener(PlayPauseButtonOnClickHandler())
|
||||||
|
|
|
@ -22,6 +22,7 @@ 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
|
||||||
|
@ -44,17 +45,18 @@ 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
|
||||||
|
@ -81,9 +83,6 @@ 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
|
||||||
|
@ -100,8 +99,7 @@ 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 -> {
|
||||||
|
@ -163,10 +161,6 @@ 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() {
|
||||||
|
@ -292,8 +286,11 @@ 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)
|
||||||
|
|
||||||
binding.playerControlsContainer.progressSlider.applyColor(color.primaryTextColor)
|
ViewUtil.setProgressDrawable(
|
||||||
|
binding.playerControlsContainer.progressSlider,
|
||||||
|
color.primaryTextColor,
|
||||||
|
true
|
||||||
|
)
|
||||||
volumeFragment?.setTintableColor(color.primaryTextColor)
|
volumeFragment?.setTintableColor(color.primaryTextColor)
|
||||||
|
|
||||||
TintHelper.setTintAuto(
|
TintHelper.setTintAuto(
|
||||||
|
@ -330,20 +327,16 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onUpdateProgressViews(progress: Int, total: Int) {
|
override fun onUpdateProgressViews(progress: Int, total: Int) {
|
||||||
val progressSlider = binding.playerControlsContainer.progressSlider
|
binding.playerControlsContainer.progressSlider.max = total
|
||||||
progressSlider.valueTo = total.toFloat()
|
|
||||||
|
|
||||||
if (isSeeking) {
|
val animator = ObjectAnimator.ofInt(
|
||||||
progressSlider.value = progress.toFloat()
|
binding.playerControlsContainer.progressSlider,
|
||||||
} else {
|
"progress",
|
||||||
progressAnimator =
|
progress
|
||||||
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
|
)
|
||||||
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
|
||||||
interpolator = LinearInterpolator()
|
animator.interpolator = LinearInterpolator()
|
||||||
start()
|
animator.start()
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.playerControlsContainer.songTotalTime.text =
|
binding.playerControlsContainer.songTotalTime.text =
|
||||||
MusicUtil.getReadableDurationString(total.toLong())
|
MusicUtil.getReadableDurationString(total.toLong())
|
||||||
|
@ -423,25 +416,16 @@ class ClassicPlayerFragment : AbsPlayerFragment(R.layout.fragment_classic_player
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpProgressSlider() {
|
private fun setUpProgressSlider() {
|
||||||
val progressSlider = binding.playerControlsContainer.progressSlider
|
binding.playerControlsContainer.progressSlider.setOnSeekBarChangeListener(object :
|
||||||
progressSlider.addOnChangeListener(Slider.OnChangeListener { _, value, fromUser ->
|
SimpleOnSeekbarChangeListener() {
|
||||||
|
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
|
MusicPlayerRemote.seekTo(progress)
|
||||||
onUpdateProgressViews(
|
onUpdateProgressViews(
|
||||||
value.toInt(),
|
MusicPlayerRemote.songProgressMillis,
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -553,7 +537,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
|
||||||
|
|
|
@ -18,6 +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 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
|
||||||
|
@ -32,8 +33,6 @@ 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) {
|
||||||
|
@ -41,7 +40,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: Slider
|
override val seekBar: SeekBar
|
||||||
get() = binding.progressSlider
|
get() = binding.progressSlider
|
||||||
|
|
||||||
override val shuffleButton: ImageButton
|
override val shuffleButton: ImageButton
|
||||||
|
@ -76,18 +75,6 @@ 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() {
|
||||||
|
@ -141,7 +128,7 @@ class FitPlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext()).ripAlpha()
|
accentColor().ripAlpha()
|
||||||
}
|
}
|
||||||
|
|
||||||
volumeFragment?.setTintable(colorFinal)
|
volumeFragment?.setTintable(colorFinal)
|
||||||
|
|
|
@ -18,9 +18,8 @@ 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 com.google.android.material.slider.Slider
|
import android.widget.SeekBar
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
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.MaterialValueHelper
|
import code.name.monkey.appthemehelper.util.MaterialValueHelper
|
||||||
|
@ -43,7 +42,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: Slider
|
override val seekBar: SeekBar
|
||||||
get() = binding.progressSlider
|
get() = binding.progressSlider
|
||||||
|
|
||||||
override val shuffleButton: ImageButton
|
override val shuffleButton: ImageButton
|
||||||
|
@ -110,7 +109,7 @@ class FlatPlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext()).ripAlpha()
|
accentColor().ripAlpha()
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTextColors(colorFinal)
|
updateTextColors(colorFinal)
|
||||||
|
|
|
@ -94,7 +94,7 @@ class PlayerPlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext())
|
accentColor()
|
||||||
}.ripAlpha()
|
}.ripAlpha()
|
||||||
|
|
||||||
TintHelper.setTintAuto(
|
TintHelper.setTintAuto(
|
||||||
|
|
|
@ -27,6 +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.FragmentPeekControlPlayerBinding
|
import code.name.monkey.retromusic.databinding.FragmentPeekControlPlayerBinding
|
||||||
|
import code.name.monkey.retromusic.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.applyColor
|
import code.name.monkey.retromusic.extensions.applyColor
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
|
@ -82,7 +83,7 @@ class PeekPlayerControlFragment : AbsPlayerControlsFragment(R.layout.fragment_pe
|
||||||
if (PreferenceUtil.isAdaptiveColor) {
|
if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext())
|
accentColor()
|
||||||
}
|
}
|
||||||
binding.progressSlider.applyColor(controlsColor)
|
binding.progressSlider.applyColor(controlsColor)
|
||||||
volumeFragment?.setTintableColor(controlsColor)
|
volumeFragment?.setTintableColor(controlsColor)
|
||||||
|
|
|
@ -19,17 +19,13 @@ 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.TextView
|
import android.widget.TextView
|
||||||
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.MaterialValueHelper
|
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.FragmentPlainControlsFragmentBinding
|
import code.name.monkey.retromusic.databinding.FragmentPlainControlsFragmentBinding
|
||||||
import code.name.monkey.retromusic.extensions.applyColor
|
import code.name.monkey.retromusic.extensions.*
|
||||||
import code.name.monkey.retromusic.extensions.getSongInfo
|
|
||||||
import code.name.monkey.retromusic.extensions.hide
|
|
||||||
import code.name.monkey.retromusic.extensions.show
|
|
||||||
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
|
import code.name.monkey.retromusic.fragments.base.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
|
||||||
|
@ -134,7 +130,7 @@ class PlainPlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext())
|
accentColor()
|
||||||
}
|
}
|
||||||
volumeFragment?.setTintable(colorFinal)
|
volumeFragment?.setTintable(colorFinal)
|
||||||
binding.progressSlider.applyColor(colorFinal)
|
binding.progressSlider.applyColor(colorFinal)
|
||||||
|
|
|
@ -18,13 +18,13 @@ 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 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.MaterialValueHelper
|
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.FragmentSimpleControlsFragmentBinding
|
import code.name.monkey.retromusic.databinding.FragmentSimpleControlsFragmentBinding
|
||||||
|
import code.name.monkey.retromusic.extensions.accentColor
|
||||||
import code.name.monkey.retromusic.extensions.getSongInfo
|
import code.name.monkey.retromusic.extensions.getSongInfo
|
||||||
import code.name.monkey.retromusic.extensions.hide
|
import code.name.monkey.retromusic.extensions.hide
|
||||||
import code.name.monkey.retromusic.extensions.show
|
import code.name.monkey.retromusic.extensions.show
|
||||||
|
@ -154,7 +154,7 @@ class SimplePlaybackControlsFragment :
|
||||||
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
val colorFinal = if (PreferenceUtil.isAdaptiveColor) {
|
||||||
color.primaryTextColor
|
color.primaryTextColor
|
||||||
} else {
|
} else {
|
||||||
ThemeStore.accentColor(requireContext())
|
accentColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
volumeFragment?.setTintable(colorFinal)
|
volumeFragment?.setTintable(colorFinal)
|
||||||
|
|
|
@ -26,25 +26,23 @@
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
tools:text="@tools:sample/date/hhmmss" />
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/progressSlider"
|
android:id="@+id/progressSlider"
|
||||||
style="@style/Widget.Retro.Slider"
|
style="@style/MusicProgressSlider"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:haloRadius="0dp"
|
android:layout_weight="1" />
|
||||||
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:paddingEnd="8dp"
|
android:paddingRight="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>
|
||||||
|
|
|
@ -44,13 +44,14 @@
|
||||||
tools:ignore="RtlHardcoded,RtlSymmetry"
|
tools:ignore="RtlHardcoded,RtlSymmetry"
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
tools:text="@tools:sample/date/hhmmss" />
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/progressSlider"
|
android:id="@+id/progressSlider"
|
||||||
style="@style/Widget.Retro.Slider"
|
style="@style/MusicProgressSlider"
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_toStartOf="@id/songTotalTime"
|
android:layout_toLeftOf="@id/songTotalTime"
|
||||||
android:layout_toEndOf="@id/songCurrentProgress" />
|
android:layout_toRightOf="@id/songCurrentProgress"
|
||||||
|
android:paddingVertical="@dimen/seekbar_padding"
|
||||||
|
tools:ignore="RtlHardcoded,UnusedAttribute" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|
|
@ -31,19 +31,13 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
tools:text="@tools:sample/date/hhmmss" />
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
android:id="@+id/progressSlider"
|
android:id="@+id/progressSlider"
|
||||||
style="@style/Widget.Retro.Slider"
|
style="@style/MusicProgressSlider"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="match_parent"
|
||||||
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" />
|
||||||
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"
|
||||||
|
|
|
@ -21,12 +21,15 @@
|
||||||
app:layout_constraintTop_toTopOf="@id/progressSlider"
|
app:layout_constraintTop_toTopOf="@id/progressSlider"
|
||||||
tools:text="@tools:sample/date/hhmmss" />
|
tools:text="@tools:sample/date/hhmmss" />
|
||||||
|
|
||||||
<com.google.android.material.slider.Slider
|
<androidx.appcompat.widget.AppCompatSeekBar
|
||||||
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"
|
||||||
app:thumbRadius="8dp"
|
android:maxHeight="2dp"
|
||||||
style="@style/Widget.Retro.Slider"
|
android:paddingVertical="@dimen/seekbar_padding"
|
||||||
|
android:progressDrawable="@drawable/color_progress_seek"
|
||||||
|
android:splitTrack="false"
|
||||||
|
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"
|
||||||
|
|
|
@ -29,11 +29,10 @@
|
||||||
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:progressDrawable="@drawable/color_progress_seek"
|
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_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="RtlHardcoded,UnusedAttribute"
|
|
||||||
tools:progress="20" />
|
tools:progress="20" />
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue