

Slider,我更喜歡叫他SeekBar,其實是一個東西啦,就是拖動條。5.0的拖動條和4.x上的HOLO風格完全不同,平添了一些精致。此外還加入了數值指示器,讓用戶在滑動的時候就能知道現在到了什么位置。Ok,理想很美好,兼容很殘酷!我雖然改了很多兼容包本身的bug,但是還是有個挺大的bug沒有解決——指示器錯位。當你在一個可以滑動的view中放着歌slider的時候,它的指示器出現的位置會根據它初次出現的位置來顯示,也就是說如果你把它滾動了,那么它的指示器還是會傻傻的根據它原來的位置進行顯示,而不會根據你滾動的新位置進行顯示。原因是什么呢?其實很簡單,指示器就是個dialog,和拖動條完全是獨立的控件,指示器顯示完畢后就死了,而拖動條還在。所以如果沒處理好指示器和拖動條的關系,就可能會出現錯位的問題。這點我最近看看能不能修復,錯誤的位置在Utils.java中,大家可以去自己修復看看。(已修復)
一、將其導入自己的工程中
首先還是下載lib,然后添加支持,並且寫好命名空間。
我維護的:https://github.com/shark0017/MaterialDesignLibrary
原作者版本:https://github.com/navasmdc/MaterialDesignLibrary
大家可以選擇一個下載,我維護的版本可能會修改上面提到的錯位的bug,原作者的版本不知道會不會融合我的代碼,原作者的版本的好處就是可能會持續更新,但我看這個作者也挺懶的,總之大家可以相互借鑒吧。
添加lib支持后我們就可以用這個控件了,放入布局文件前還是要寫命名空間的。
xmlns:app="http://schemas.android.com/apk/res-auto"
然后放上這個控件就好了

<com.gc.materialdesign.views.Slider android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" />
這里需要注意的是,上面那個小球和實際的小球完全是不一樣的,我這里僅僅是為了大家在編譯器中預覽而弄了個小球上去,僅僅方便大家直觀的看效果。
實際效果:

二、在布局文件中設置各種屬性
app:showNumberIndicator="true" 是否在滑動時顯示指示器

android:background="#ff0000" 設定背景顏色,也就是滑動條顏色

app:thumbSize="30dp" 設置滑動圓球的大小,其實按住后圓球擴大的大小也是可以設置的。但我感覺點擊后放大就是為了告訴用戶你已經按住了這個拖動球,用默認的就完全能實現這個效果,當你的圓球設置的較大后,那個點擊后出現的放大效果就看不到了(不是沒有,而是因為疊加而看不見),也因為你的圓球已經足夠大了,所以也沒必要給用戶什么指示了。所以這個我就沒去做設置。

app:value="35" 初始的value,如果你的max小於你指定的value,那么初始直接會顯示max的值

三、通過代碼進行各種設定,包括監聽事件
public class SliderTest extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slider); Slider slider = (Slider)findViewById(R.id.slider); slider01.showNumberIndicator(true);// 設置推動時顯示指示器 slider.setBackgroundColor(0xffff0000);// 背景顏色
slider.setValue(40);// 設定初始進度 slider.setBackgroundColor(getResources().getColor(R.color.orange));// 背景顏色// 監聽進度 slider.setOnValueChangedListener(new OnValueChangedListener() { @Override public void onValueChanged(int value) { // TODO 自動生成的方法存根 System.out.println("now value = "+ value); } }); slider.setThumbSize(30);// 設置滑塊的大小 slider.setValue(35, false);// 在線程中設定初始進度,如果為true,那么就是在線程中跟新,可能會慢一些。 } }
四、間續滑塊(Discrete Slider)

這個其實就是分段式滑塊了,這個東東可以參考這篇文章中的做法(要做點小修改),適合於有多個選擇值的情況。順便說一句,google涉及的指示器好難看啊,一個倒水滴狀真心丑。而且對於這種有分段值的拖動條,本身就那么幾個值,你出來什么指示器啊,完全沒意義。
文章地址:http://www.cnblogs.com/tianzhijiexian/p/4044086.html

今天看到有開源的項目已經做好了MD風格的分段式滑動條了,分享下項目的地址:
https://github.com/oli107/material-range-bar
其實它就是根據上文中項目改的,所以對比看看。

