SeekBar с десятичными значениями - PullRequest
8 голосов
/ 01 июня 2011

Создать ли создание SeekBar, в котором используются десятичные значения?

Например, будет отображаться

0.0, 0.1, 0.2, 0.3, ..., 5.5, 5.6, 5.7, ..., 9.9, 10.0

Ответы [ 2 ]

12 голосов
/ 01 июня 2011

SeekBar по умолчанию принимает значение от 0 до 100. Когда функция onProgressChanged вызывается из прослушивателя изменений SeekBar, номер прогресса передается в параметре progress.

Если вы хотитепреобразуйте этот прогресс в десятичное число от 0,0 -> 10,0 для отображения или обработки, все, что вам нужно сделать, это разделить прогресс на 10 при получении значения прогресса и преобразовать это значение в число с плавающей точкой.Вот пример кода:

aSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        float value = ((float)progress / 10.0);
        // value now holds the decimal value between 0.0 and 10.0 of the progress
        // Example:
        // If the progress changed to 45, value would now hold 4.5
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {}
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {}
});
3 голосов
/ 01 июня 2011

Прогресс SeekBar - это int между 0 и 100. Выполните подходящую арифметическую операцию над значением прогресса, чтобы масштабировать его, если вам нужны другие значения.

В вашем случае деление на 10 поможет.Примерно так в вашем коде:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        float decimalProgress = (float) progress/10;
    }
...