0

我想使用 Rx android 识别 Seekbar 更改事件。问题是我想识别单个可观察对象而不是多个可观察对象中的所有事件。这是我的代码片段,其中包含进度更改事件。

 RxSeekBar.userChanges(setup_volume_limit_seekbar)
            .observeOn(AndroidSchedulers.mainThread())
            .skip(1)
            .subscribe {
                var value = it
                if (value == 0) {
                    value = 1
                }
                // More code here
            }

我要做的就是在用户停止将手指移到 Seekbar 上时监听停止事件。提前致谢

4

1 回答 1

0

所以我找到了合适的解决方案。可以在一个 observable 本身中捕获所有 seekbar 回调。下面是解决方案

科特林

RxSeekBar.changeEvents(seekbar)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { seekBarChangeEvent ->
            when (seekBarChangeEvent) {
                is SeekBarProgressChangeEvent -> Log.d(TAG, "on Progress : " + seekBarChangeEvent.progress())
                is SeekBarStartChangeEvent -> Log.d(TAG, "on Start : ")
                is SeekBarStopChangeEvent -> Log.d(TAG, "on Stop : ")
            }
        }

爪哇

RxSeekBar.changeEvents(seekbar)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(seekBarChangeEvent -> {
            if (seekBarChangeEvent instanceof SeekBarProgressChangeEvent)
            {
                SeekBarProgressChangeEvent seekBarProgressChangeEvent = (SeekBarProgressChangeEvent) seekBarChangeEvent;
                Log.d(TAG, "on Progress : " + seekBarProgressChangeEvent.progress());
            }
            else if (seekBarChangeEvent instanceof SeekBarStartChangeEvent)
            {
                Log.d(TAG, "on Start : " );
            }
            if (seekBarChangeEvent instanceof SeekBarStopChangeEvent)
            {
                Log.d(TAG, "on Stop : " );
            }
        });
于 2018-09-24T07:01:07.897 回答