Android java: 正确使用搜索栏的进度值

Android java: Using a seekbar's progressValue correctly

我目前在我的应用程序中使用了几个搜索栏。有两个给我带来麻烦。我将这两个搜索栏的最大值设置为 10。

我将使用搜索栏的值来更改代码中的 2 个数字。

基本上,我有 2 个具有范围的变量。一种是蛋白质 mod,可以是 0.8 到 1.0 之间的任何值,而脂肪mod 可以是 0.3 到 0.6 之间的任何值。我正在从 seekbar 中获取 progressValue 并将该值转换为存储为双精度的百分比,然后执行等式

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

我的问题: 搜索栏只是半功能。当一直向左时,它们是预期范围的最小值 - 但保持该值直到搜索栏一直最大化,然后 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
        }
    });

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

尝试以下操作:

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

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

由于 progressValue 和 10 都是整数,所以除法结果是整数。将 10 转换为 double 应该可以解决问题。