1

How can I use rxBinding to call setOnSeekBarChangeListener?

My code :

    view?.seekBarDisplay?.setOnSeekBarChangeListener(object :
                SeekBar.OnSeekBarChangeListener {
                override fun onProgressChanged(seekBar: SeekBar, 
    progress: Int, fromuser: Boolean) {

                   val backLightValue = (progress / 100f)
                   val layoutParams = activity?.window?.attributes
                   layoutParams?.screenBrightness = backLightValue
                   activity?.window?.attributes = layoutParams
                }

               override fun onStartTrackingTouch(seekBar: SeekBar) {}

               override fun onStopTrackingTouch(seekBar: SeekBar) {}
           })
Pouya Heydari
  • 2,496
  • 26
  • 39
Reza Zavareh
  • 187
  • 3
  • 7

1 Answers1

1

As RxBinding 4.0 released, you have 4 options to implement the Seekbar using it:

  1. the SeekBar.changeEvents(): with subscribing to this observable, you'll get notified when onProgressChanged, onStartTrackingTouch, and onStopTrackingTouch methods get called.

  2. SeekBar.changes(): Notifies you only when any changes happen to the seekbar.

  3. SeekBar.userChanges(): Notifies you only when any changes happen to the seekbar by User itself.

  4. SeekBar.systemChanges(): Notifies you only when any changes happen to the seekbar by the system.

you can subscribe to these function as other usual Observables.

Here is a sample of the first method:

yourSeekBar.changes()
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { seekBarChangeEvent ->
            when (seekBarChangeEvent) {
                is SeekBarProgressChangeEvent -> {}
                is SeekBarStartChangeEvent -> {}
                is SeekBarStopChangeEvent -> {}
            }
        }
Pouya Heydari
  • 2,496
  • 26
  • 39