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为您完成其余的工作。