【问题标题】:Change Progress/Seekbar scale to be non-linear (e.g. logarithmic)将进度/搜索栏比例更改为非线性(例如对数)
【发布时间】:2012-11-25 17:33:20
【问题描述】:

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

如果可以,怎么改?

【问题讨论】:

  • 我不知道你所说的“缩放”是什么。这些小部件的进度是通过setProgress(progressValue) 设置的,如果您想要对数行为,请确保您使用setProgress() 方法使用的值在对数系列中。
  • 假设我将最小值设置为 0,最大值设置为 10,000。当用户将进度条滑动到 50% 时,值将是 5,000 ,但我想要类似 1,000 的东西,例如

标签: android progress-bar seekbar


【解决方案1】:

例如:

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.
        }
    });

反之亦然:

weightSeekBar.setProgress((int) (Math.sqrt(((userWeight - minWeight) / (maxWeight - minWeight)) * 1000.0f * 1000.0f)));

【讨论】:

    猜你喜欢
    • 2016-12-15
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多