Android:在SeekBar中设置间隔

Android:在SeekBar中设置间隔,android,Android,在我的应用程序中,我有一个对话框中显示的Seekbar。 现在我想在Seekbar中设置间隔和步长。间隔应为0-250,每一步应为5分钟 到目前为止,这是我的代码: public class seekActivity extends Activity implements OnClickListener, OnSeekBarChangeListener { SeekBar seekbar; Button button; TextView textview; @Ov

在我的应用程序中,我有一个对话框中显示的
Seekbar
。 现在我想在
Seekbar
中设置间隔和步长。间隔应为0-250,每一步应为5分钟

到目前为止,这是我的代码:

public class seekActivity extends Activity implements OnClickListener, OnSeekBarChangeListener {
    SeekBar seekbar;
    Button button;
    TextView textview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set up main content view
        setContentView(R.layout.main);
        //this button will show the dialog
        Button button1main = (Button) findViewById(R.id.Button01main);
        button1main.setOnClickListener(this);
    }
    public void onClick(View v) {
        //set up dialog
        Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.maindialog);
        dialog.setTitle("This is my custom dialog box");
        dialog.setCancelable(true);
        button = (Button) dialog.findViewById(R.id.Button01);
        seekbar = (SeekBar) dialog.findViewById(R.id.seekBar1);
        seekbar.setOnSeekBarChangeListener(this);
        textview = (TextView) dialog.findViewById(R.id.textView1);
        dialog.show();
    }
    public class SeekBarPreference {
    }
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
    boolean fromUser) {
        // TODO Auto-generated method stub
        textview.setText(progress + "");
    }
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    };
}
谁能给我一些提示/代码怎么做


谢谢

与其这样做,为什么不将SeekBar的最大值设置为50(250/5),然后进行必要的转换,将SeekBar值转换为“真实”值?

您只需更新onProgressChanged方法,如下所示


int stepSize = 5;
public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
    progress = ((int)Math.round(progress/stepSize))*stepSize;
    seekBar.setProgress(progress);
    textview.setText(progress + "");

}
如果你使用

Math.round((float)progress / stepSize) * stepSize

你的阈值将在两个步骤的中间

如果你使用

progress / stepSize * stepSize

滑块将始终跳到左侧台阶。这只会减少除法中的小数。

您的问题是如何使它每5分钟走一步?如果不清楚,则不抱歉,默认情况下,当您移动seekbar时,它一次走一步:1,2,3,4,5,6,7,8,9,10。我想要的是每次移动5步:5,10,15,20,25,30,35,40。如果这很难做到,请帮我调整一下间隔!由于
进度
步长
已经是
int
类型,因此不需要
数学圆
(进度/步长)*步长
就足够了。堆栈溢出。。。seekbar中的任何更改都会影响它本身,但仍然是一个问题。将seekbar max设置为您希望它具有的步数。seekbar logik为您完成其余的工作。