[Android] New equalizer: better scroll to current preset

Nicolas Pomepuy git at videolan.org
Fri Jul 25 11:46:43 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Jun 17 09:21:56 2025 +0200| [f6bc7b5fe412c13e798ad8e8cda45d4bdca13209] | committer: Nicolas Pomepuy

New equalizer: better scroll to current preset

> https://code.videolan.org/videolan/vlc-android/commit/f6bc7b5fe412c13e798ad8e8cda45d4bdca13209
---

 .../videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt    | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
index c2d35f007d..2808e76821 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/EqualizerFragmentDialog.kt
@@ -32,6 +32,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.view.ViewGroup.LayoutParams
+import android.widget.HorizontalScrollView
 import android.widget.LinearLayout
 import androidx.core.content.edit
 import androidx.core.view.children
@@ -49,6 +50,7 @@ import org.videolan.resources.VLCInstance
 import org.videolan.resources.VLCOptions
 import org.videolan.tools.KEY_EQUALIZER_ENABLED
 import org.videolan.tools.Settings
+import org.videolan.tools.dp
 import org.videolan.tools.isStarted
 import org.videolan.tools.setGone
 import org.videolan.tools.setVisible
@@ -195,6 +197,7 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
 
     private fun fillPresets() {
         var selectedChip: Chip? = null
+        var selectedChipIndex = 0
 
         // Refresh instead of recreating
         if (binding.equalizerPresets.children.count() == viewModel.equalizerEntries.value?.count()) {
@@ -213,7 +216,10 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
             chip.tag = item.equalizerEntry.id
             chip.isCheckable = true
             if (item.equalizerEntry.presetIndex == -1) chip.setChipBackgroundColorResource(R.color.orange_800_transparent_10)
-            if (item.equalizerEntry.id == viewModel.currentEqualizerId) selectedChip = chip
+            if (item.equalizerEntry.id == viewModel.currentEqualizerId) {
+                selectedChip = chip
+                selectedChipIndex = index
+            }
             chip.setOnClickListener {
                 viewModel.clearHistory()
                 binding.undo.isEnabled = false
@@ -229,7 +235,11 @@ class EqualizerFragmentDialog : VLCBottomSheetDialogFragment(), Slider.OnChangeL
 
         binding.equalizerPresetsContainer.post {
             selectPreset()
-            binding.equalizerPresetsContainer.scrollTo(selectedChip!!.left, selectedChip!!.top)
+            when {
+                (selectedChipIndex == 0) -> binding.equalizerPresetsContainer.scrollTo(0, selectedChip!!.top)
+                (selectedChipIndex == (viewModel.equalizerEntries.value?.size ?: 0) - 1) -> binding.equalizerPresetsContainer.fullScroll(HorizontalScrollView.FOCUS_RIGHT)
+                else -> binding.equalizerPresetsContainer.scrollTo(selectedChip!!.left - 48.dp, selectedChip!!.top)
+            }
         }
     }
 



More information about the Android mailing list