将进度/搜索栏比例更改为非线性(例如,对数)

Wur*_*bro 9 android seekbar progress-bar

是否可以将Progress-或Seekbars的缩放更改为非线性?

如果是这样,怎么改变?

小智 5

例如:

weightSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

// place onStartTrackingTouch(SeekBar seekBar) and onStopTrackingTouch(SeekBar seekBar) here

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        userWeight = ((progress * progress) / (1000.0f * 1000.0f)) * (maxWeight - minWeight) + minWeight; // Approximate an exponential curve with x^2.
        }
    });
Run Code Online (Sandbox Code Playgroud)

反之亦然:

weightSeekBar.setProgress((int) (Math.sqrt(((userWeight - minWeight) / (maxWeight - minWeight)) * 1000.0f * 1000.0f)));
Run Code Online (Sandbox Code Playgroud)