2017-08-22 2 views
-1

私は複数のSeekBarを持っています。私は、totalValを計算/更新するために、すべてSeekBarprogress値の変更に関する詳細を検出したいと思います。SeekBarの動きの方向を検出する

より具体的には、選択されたSeekBarの値が(前のprogressレベルに対して)右または左に移動されたかどうか、および移動されたステップの数によって検出されます。例えば

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

  1. SeekBar Sの即ちtotalval = 10
  2. つが1つのステップだけ右に移動し、いくつかの値にtotalValを初期化します。
  3. totalVal = 11
  4. Seekbarが5段階左に移動しました。
  5. totalVal = 6

誰かがSeekBar運動の方向を検出する方法を教えてくださいすることができ、同様にstepsの数は、それが移動したのか?それがすべて可能ならば。

+0

ここでは、正の値に向かって移動している場合はゼロ(ゼロ)、右に移動する場合は負の値、左の場合は負の値、それよりも前の場合は負の値1つは正しい方向に進み、次の値がそれよりも小さい場合は前の値が残っています –

答えて

1

最後のシークバー値を保存できます。したがって、シークバーの方向を検出することができます。

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

整数メンバーは2つあります。それらの名前は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は、クラスのメンバである必要があります!

関連する問題