1

如何使用 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) {}
           })
4

1 回答 1

1

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

  1. SeekBar.changeEvents(): 订阅此 observable 后,您将在、onProgressChangedonStartTrackingTouch方法onStopTrackingTouch被调用时收到通知。

  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 -> {}
            }
        }
于 2020-06-10T07:50:20.943 回答