1. 程式人生 > >android seekbar滑動條實現平滑滑動並回滾至指定值的整數倍

android seekbar滑動條實現平滑滑動並回滾至指定值的整數倍

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; } }