【问题标题】:How to identify Seekbar change events in Rx?如何识别 Rx 中的 Seekbar 更改事件?
【发布时间】:2018-09-24 07:01:07
【问题描述】:
我想使用 Rx android 识别 Seekbar 更改事件。问题是我想识别单个可观察对象而不是多个可观察对象中的所有事件。这是我的代码 sn-p,其中包含进度更改事件。
RxSeekBar.userChanges(setup_volume_limit_seekbar)
.observeOn(AndroidSchedulers.mainThread())
.skip(1)
.subscribe {
var value = it
if (value == 0) {
value = 1
}
// More code here
}
我想要做的就是在用户停止将手指移过 Seekbar 时监听停止事件。
提前致谢
【问题讨论】:
标签:
android
rx-android
rx-binding
【解决方案1】:
所以我找到了合适的解决方案。可以在一个 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 : ")
}
}
Java
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 : " );
}
});