本文共 1825 字,大约阅读时间需要 6 分钟。
Android开源DiscreteSeekbar:动画气泡指示当前滑动值
Android本身提供的SeekBar用以调控值以及回调传回当前选择的值。但Android原生的SeekBar表现力不太丰富,在github上有一个开源的第三方DiscreteSeekbar,增强了Android原生的Android Seekbar的表现力,DiscreteSeekbar在github上的项目主页是:
当用户的手指拖动DiscreteSeekbar的滑块时候会自动弹出气泡跟随滑动提示当前的值。
使用DiscreteSeekbar首先需要写布局:
DiscreteSeekbar一些常用的属性定义:
app:dsb_max:最大值 app:dsb_min:最小值 app:dsb_value:当前值 app:dsb_indicatorFormatter:定义在弹出的动画气泡中显示的样式,比如,app:dsb_indicatorFormatter="值 %d"表示显示出来的值形如:值 37。DiscreteSeekbar可以自定制的属性很多,可以在其github的项目主页上查看。DiscreteSeekbar可以像Android 原生的Seekbar一样使用。
Java代码:
import android.app.Activity;import android.os.Bundle;import android.util.Log;import org.adw.library.widgets.discreteseekbar.DiscreteSeekBar;import org.adw.library.widgets.discreteseekbar.DiscreteSeekBar.OnProgressChangeListener;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DiscreteSeekBar discreteSeekBar1 = (DiscreteSeekBar) findViewById(R.id.discrete1); discreteSeekBar1.setNumericTransformer(new DiscreteSeekBar.NumericTransformer() { @Override public int transform(int value) { return value * 100; } }); DiscreteSeekBar discreteSeekBar2 = (DiscreteSeekBar) findViewById(R.id.discrete2); discreteSeekBar2.setOnProgressChangeListener(new OnProgressChangeListener(){ @Override public void onProgressChanged(DiscreteSeekBar seekBar, int value, boolean fromUser) { Log.d("当前值", value+""); } @Override public void onStartTrackingTouch(DiscreteSeekBar seekBar) { } @Override public void onStopTrackingTouch(DiscreteSeekBar seekBar) { }}); }}运行结果如图: