我需要一个值从1到6,步长为0.5的进度条。因此,数值必须为:1-1.5-2-2.5...请问正确的算法是什么?
我会将可能的值存储在一个数组中,并使用当前的拖动条值作为元素索引来访问“期望”的值。
就像这样
int[] values = {0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4};
int current = values[ seekbar.getValue() ];
将SeekBar定义在布局中,如下所示:
<SeekBar
android:id="@+id/seekbar1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progress="0"
android:max="5"/>
public class MainActivity extends Activity {
private SeekBar seekBar;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar1);
for(i=0;i<seekBar.getMax();i=i+0.5){
Thread.sleep(500);
seekBar.setProgress(i);
}
}
<SeekBar
android:id="@+id/seek"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="12" />
然后使用以下代码访问进度条:
mSeekBar = (SeekBar) findViewById(R.id.seek);
mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
Toast.makeText(MainActivity.this, "" + (float) progress / 2, Toast.LENGTH_SHORT).show();
}
});
这将在每次更改时为您提供一个提示。您只需将每个进度除以2。
编辑1: 或者您可以使用以下代码获取实际值:
float value = (float) mSeekBar.getProgress() / 2;