android seekbar滑動條實現平滑滑動並回滾至指定值的整數倍
阿新 • • 發佈:2019-01-25
seekbar預設最大值為100,但當我們需要選擇的數值更大時,需制定預設最大值,但現在很多app都實現了滑動條可自由平滑的滑動,但手鬆開後,自動回滾至最接近的可選數值,下面我們就來介紹一下這種效果的實現方法
一、配置檔案xml
<SeekBar
android:id="@+id/sb_quota"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
二、配置seekBar
private SeekBar sb_quota;
private int maxAmount=1000;//最大值
private int default_unit=50;//滑動停留單位
private int quota;//當前滑動到的值
sb_quota = (SeekBar) rootView.findViewById(R.id.sb_quota);
sb_quota.setMax(maxAmount);
//滑動事件
sb_quota.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
refreshView();
}
});
private void refreshView() {
if (quota % default_unit > 0 && quota != maxAmount && quota != defAmount) {
int remainder = quota % default_unit;
if (remainder > default_unit / 2 && default_unit * (((int) (quota / default_unit)) + 1) <= maxAmount) {
quota = default_unit * (((int) (quota / default_unit)) + 1);
} else {
quota = default_unit * (int) (quota / default_unit);
}
sb_quota.setProgress(quota);
return;
}
}