2016-12-02 75 views
0

我有一個從0到100的搜索欄。我想在搜索欄中創建離散點,以便進度只在0,10,20等等處停止。我不會在中途停下來。 我試着用下面的代碼,我無法成功。如何以固定的時間間隔停止搜索欄的進度

seekBar.setProgress(0); 
    //seekBar.incrementProgressBy(10); 
    seekBar.setMax(100); 

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {     progress = progress/10; 
      progress = progress * 10; 
      seekBarValue.setText(String.valueOf(progress)); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 


     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      int seekBarIntValue; 
     // seekBar.incrementProgressBy(10); 
      if((seekBar.getProgress()%10)!=0){ 
       if((seekBar.getProgress()%10)> 5) 
       { 
        seekBarIntValue =(seekBar.getProgress()/10)+(seekBar.getProgress()%10); 

       }else{ 
        seekBarIntValue =(seekBar.getProgress()/10)-(seekBar.getProgress()%10); 
       } 

      }else{ 
       seekBarIntValue = (seekBar.getProgress()); 
      } 
      seekBar.setProgress(seekBarIntValue); 

     } 
    }); 

請幫我解決這個問題。

+0

如果答案是正確的,然後讓它如右圖所示。所以有人可以使用它。 –

回答

1

試試這個。

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
{ 
    // round progress up or down to the nearest 10 
    int roundedProgress = (int) (Math.rint((double) progress/10) * 10); 
    if (fromUser) 
    { 
    seekBar.setProgress(roundedProgress); 
    } 
} 
0

因爲您需要重寫onProgressChanged方法。 我是這樣做的。

@Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

     int interval = 20; 

     progress = (progress/interval)*interval; 
     seekBar.setProgress(progress); 

    } 
0

嘗試下面的代碼

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     int progress = 0; 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) { 
      progress = progresValue; 
      seekBarValue.setText(progress + "/" + seekBar.getMax()); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // Do something here, if you want to do anything at the start of 
      // touching the seekbar 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // Display the value in textview 

     } 
    }); 
0

例力SeekBar停在30

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
     if(progress > 30){ 
      seekBar.setProgress(30); 
      return; 
     } 
     tvProgress.setText(""+progress); 
    } 

    public void onStartTrackingTouch(SeekBar seekBar) { 
    } 

    public void onStopTrackingTouch(SeekBar seekBar) { 
    } 
}); 
相關問題