更平滑 Android SeekBar

Smoother Android SeekBar

我并不是在严格地寻找这个想法的实现,但如果有人已经实现了,那就太棒了,我想看看。否则:

我正在尝试在我的 Android 波形发生器应用程序中实现一对 SeekBars。我有几个控件,例如:音量、频率、低通滤波器截止频率、共振、弯音等。

我的 SeekBars 的问题是它们听起来太过分了,我希望它听起来更模拟(如果你愿意的话更平滑)。在我的 iOS 应用程序实施中,原生 UISliders 做得很好,我没有听到任何类似台阶的动作。但是,SeekBars 不是很平滑,并且倾向于从一个值跳到另一个值(比如说从 10 到 100,最大值为 1000)。

我在想,如果我只是设计自己的自定义 UI 以获得更平滑的滑块,或者是否已经有一个,这可能是最好的。另外,我的音频线程是否有可能中断 SeekBar 的功能并导致这些 jumps/step-like 行为?

我已经尝试过的事情:

谢谢!

首先,找出您希望音量增加的最快速度。对于此示例,我将使用 1 秒(1000 毫秒)从 0 更改为 1.0。 (0% 到 100%)

进入循环后,记录当前时间。然后,对于循环的每次迭代,检查经过的时间并增加必要的数量。

// example, myLoop(0.25, 0.75, startTime);
double myLoop(double start, double end, long startTime) {
    long now = System.currentTimeMillis(); // (100ms since startTime)
    double span = end - start; // the span in value, 0 to 1.0 (=0.5)

    double timeSpan = (now - startTime) / (span * 1000); // time since started / total time of change (100/500 = 0.2)

    return timeSpan * span + start; // (0.2 * 0.5 = 0.1) + 0.25 = 0.35, the value for this loop
}

(未经测试的代码)