如何在每个段上触发onProgressChanged()

时间:2016-07-06 10:58:17

标签: java android

我目前正在研究Android应用程序,我正面临着一个优化问题:每当用户将拇指拖到中间附近时(seekbar为100)我都有一个max value所以靠近中间我意味着55到45之间)拇指应该自动跳到中间。

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    x=seek.getProgress();
    if (x>45 && x<55) {
        seek.setProgress(50);
    }
    socket.emit("move1", x);
}

它可以正常工作,但只要拇指跳跃,onProgressChanged事件就会一直持续发射,直到用户将拇指从中间区域移开,这样会消耗太多资源。我想要的是,虽然seekbar的进度在45到55之间,onProgressChanged只会触发一次。

1 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助 - fromUser参数会告诉您进度是否因用户操作或编程方式而发生更改。如果用户更改了它,并且它已经不是50,则将其设置为50。

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        int x = seekBar.getProgress();
        if(fromUser && x != 50 && x > 45 && x < 55) {
            seekBar.setProgress(50);
        }
        ....
    }
});