seekbar 是一个进度条,使用场景包括,调整音量,播放进度或速度等。
快速设置一个显示在dialog中的seekbar的流程如下:
自定义一个layout,把这个布局作为dialog的界面,在里面存放seekbar以及其他一些说明性文字或装饰。这里我选择使用FrameLayout,在里面简单设置布局alignment和背景,并加入一个SeekBar标签即可。
然后在一个活动中声明一个SeekBar对象,一个layout对象,一个dialog对象。其中的layout对象使用之前定义的FrameLayout布局文件,执行(FrameLayout) View.inflate( this, R.layout.XXXLayout, null) 。然后new 一个dialog对象,在构造函数中指定其style为普通dialog即可。实例化dialog之后,为此dialog执行setContentView()方法,参数即是刚才的frameLayout对象。
这就跟初始化一个Activity一样,一个dialog需要设置一个布局,而布局的初始化需要inflate。之前接触过的另一个需要inflate的布局,是menu控件。
然后为seekBar执行findview方法,并为它设置监听事件。seekBar是一个可拖拽的控件,监听事件是setOnSeekBarChangeListener。在里面重写一个匿名onSeekBarChangeListener,其中有三个方法需要重写,分别是onProgressChanged, onStartTrackingTouch,onStopTrackingTouch这三个,但是我这里只重写了第一个。在onProgressChanged中,执行对progress参数的保存逻辑即可。
写完就可以通过点击事件启动这个seekbar了。在按钮的点击事件中,使用seekbar的成员方法,setProgress()可以为seekbar设置位置。使用show()方法,将dialog显示出来。最后在ondestroy中不要忘了确认dialog销毁。