2017-08-22 29 views
-1

我有一個多個SeekBar s。我想檢測每個SeekBarprogress值中的更改詳情,以便計算/更新totalVal檢測SeekBar運動的方向

更具體地說,我想要檢測所選的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 S的通過1步移動到右側。
  3. totalVal = 11
  4. 不同Seekbar被左移5步。
  5. totalVal = 6

有人可以告訴我如何檢測SeekBar運動的方向,以及對steps數量很是感動?如果有可能的話。

+0

這裏有一種方法:如果它向正值移動,則表明它正在向右移動,反之亦然,如果該值大於先前的值,則爲負值或更簡單一個是正​​確的,如果下一個值小於前一個值的左邊 –

回答

1

您可以保存最後的seekbar值。所以你可以檢測seekbar的方向..

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

有兩個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必須是類的成員!