带有 rxBinding 的 setOnSeekBarChangeListener

setOnSeekBarChangeListener with rxBinding

如何使用 rxBinding 调用 setOnSeekBarChangeListener

我的代码:

    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) {}
           })

随着 RxBinding 4.0 的发布,您有 4 个选项来使用它来实现 Seekbar:

  1. SeekBar.changeEvents():通过订阅此可观察对象,您将在 onProgressChangedonStartTrackingTouchonStopTrackingTouch 方法被调用时收到通知.

  2. SeekBar.changes(): 仅当搜索栏发生任何变化时通知您。

  3. SeekBar.userChanges():仅当用户自己对搜索栏进行任何更改时通知您。

  4. SeekBar.systemChanges(): 仅当系统对搜索栏进行任何更改时通知您。

您可以像订阅其他常用的 Observable 一样订阅这些函数。

这是第一种方法的示例:

yourSeekBar.changes()
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { seekBarChangeEvent ->
            when (seekBarChangeEvent) {
                is SeekBarProgressChangeEvent -> {}
                is SeekBarStartChangeEvent -> {}
                is SeekBarStopChangeEvent -> {}
            }
        }