检测SeekBar运动的方向

时间:2017-08-22 00:39:12

标签: java android seekbar android-seekbar

我有多个SeekBar。我想检测每个SeekBar progress值的变化详情,以便计算/更新totalVal

更具体地说,我想检测所选SeekBar值是向右移动还是向左移动(相对于之前的progress级别),以及移动了多少步

mySeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progressVal, boolean fromUser) {
        // perform calculations here
    }
    // ...
}

例如:

  1. 将totalVal初始化为某个值,即totalval = 10
  2. 其中一个SeekBar向右移动了一步。
  3. totalVal = 11
  4. 不同的Seekbar向左移动了5步。
  5. totalVal = 6
  6. 有人可以告诉我如何检测SeekBar移动的方向,以及移动steps的数量吗?如果可能的话。

2 个答案:

答案 0 :(得分:2)

您可以保存最后一个搜索栏值。所以你可以检测到搜索栏的方向..

protected void onCreate(Bundle savedInstanceState) {
    int lastSeekbarVal = 0;
    mySeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progressVal, boolean fromUser) {
            if (progressVal > lastSeekbarVal) {/*Seekbar moved to the right*/}
            else if (progressVal < lastSeekbarVal) {/*Seekbar moved to the left*/}
            lastSeekbarVal = progressVal;
        }
        // ...
    }
}

答案 1 :(得分:-1)

有两个Integer类成员。他们的名字是seekBar1Current,seekBar2Current。

seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {   
@Override
    public void onProgressChanged(SeekBar seekBar, int progressVal, boolean fromUser) {
           if(progressVal < seekBar1Current) {
                  totalVal = totalVal - (seekBar1Current - progressVal);
           } else {
                  totalVal = totalVal + (progressVal - seekBar1Current);
           }
           seekBar1Current = totalVal;
       }
       // ...
    });

seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {   
@Override
    public void onProgressChanged(SeekBar seekBar, int progressVal, boolean fromUser) {
           if(progressVal < seekBar1Current) {
                  totalVal = totalVal - (seekBar2Current - progressVal);
           } else {
                  totalVal = totalVal + (progressVal - seekBar2Current);
           }
           seekBar2Current = totalVal;
       }
       // ...
    });

重要提示:seekBar1Current和seekBar2Current必须是CLASS MEMBER !!!