2016-02-19 28 views
1

我目前在我的应用程序中使用了一对搜索栏。有2个给我带来麻烦。我将这两个查找条的最大值设置为10.Android java:正确使用seekbar的progressValue

我将使用seekbars的值在我的代码中更改2个数字。

所以基本上,我有2个变量有一个范围。一种是蛋白质模型,可以是0.8到1.0之间的任何值,fatmod可以是0.3到0.6之间的任何值。我从搜索条采取progressValue和值转换为存储为双百分比,然后该干嘛方程

proteinmod = proteinmod = 0.8+(progressValue/10)*0.2; 
fatmod = 0.3+(progressValue/10)*0.3; 

我的问题:的seekbars只有半功能。当一直走到左边时,它们是预期范围的最小值 - 但保持该值直到seekbar完全超出,然后proteinmod和fatmod被设置为最大值。我试着设置一个等于进度值的textview并在不同的位置测试它,并且progressValue确实工作正常。但由于某些原因,这些mod值不会在我想要的范围内的其他地方假设值。这是我的代码。提前感谢你!

double proteinmod = 0; 
double fatmod = 0; 

    seekbar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      proteinmod = 0.8+(progressValue/10)*0.2; 
      tv6.setText(String.valueOf(proteinmod)); 
      updateOutput(); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 
    }); 

    seekbar3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      fatmod = 0.3+(progressValue/10)*0.3; 
      tv6.setText(String.valueOf(fatmod)); 
      updateOutput(); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 
    }); 

我相信这应该是您需要的所有代码,但如果您需要其他位,请随时询问。

回答

1

尝试以下方法:

proteinmod = 0.8+(progressValue/10d)*0.2; 

fatmod = 0.3+(progressValue/10d)*0.3; 

由于progressValue和10均为整数的除法的结果是一个整数。将10投掷到双倍应该解决问题。

+0

哦,非常感谢你!修正它正是我想要的。 我一直认为,如果你做了一个整数和一个双数的数学,整数将用于它的双重对手。感谢您解决这个问题! –