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銷毀。