我目前正在研究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
只会触发一次。
答案 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);
}
....
}
});