在應(yīng)用開發(fā)中有沒有遇到過通過滑桿控件選擇一些區(qū)間條件實現(xiàn)參數(shù)變化赔桌?今天我們就來自定義View實現(xiàn)一個多功能又實用的版本SeekBar。
](http://upload-images.jianshu.io/upload_images/3982371-7f76b66f235bde86.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
1.在布局中直接使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:padding="20dp"
tools:context="com.tangyx.seekbar.MainActivity"
android:orientation="vertical">
<RelativeLayout
android:layout_marginTop="50dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.seekbar.sliding.text.TextSeekBar
android:id="@+id/only_back"
android:layout_width="match_parent"
android:layout_height="50dp"
app:tickCount="2"/>
...
</RelativeLayout>
<LinearLayout
android:id="@+id/time_layout"
android:layout_marginTop="30dp"
android:layout_marginLeft="5dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.seekbar.sliding.SlidingSeekBar
android:id="@+id/time_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tickCount="5"
app:tickHeight="3dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
app:connectingLineColor="@android:color/black"
app:barColor="@color/color_e0e8ee"
app:barWeight="1.5dp"/>
</LinearLayout>
</LinearLayout>
2.自定義的SeekBar一共有兩種
第一種在滑球上面顯示當(dāng)前選擇模式钙态,就是設(shè)置文字顯示在滑球上(com.seekbar.sliding.text.TextSeekBar)。
第二種兩邊都可以滑動操作数焊,比如選擇一個時間區(qū)域(com.seekbar.sliding.SlidingSeekBar)疯搅。
<b>支持的屬性:
<declare-styleable name="SeekBar">
<!--可滑動選擇區(qū)間段-->
<attr name="tickCount" format="integer" />
<!--每個間隔的標示的高度-->
<attr name="tickHeight" format="dimension" />
<attr name="barWeight" format="dimension" />
<!--被滑動線條顏色-->
<attr name="barColor" format="reference|color" />
<attr name="connectingLineWeight" format="dimension" />
<!--線條的顏色-->
<attr name="connectingLineColor" format="reference|color" />
<!--自定義滑球的圓形大小-->
<attr name="thumbRadius" format="dimension" />
<!--自定義滑球的圖片 沒有觸摸的樣式-->
<attr name="thumbImageNormal" format="reference" />
<!--自定義滑球的圖片 手觸摸按下的樣式-->
<attr name="thumbImagePressed" format="reference" />
<!--如果不設(shè)置圖片,可以配合thumbRadius用程序?qū)崿F(xiàn)的滑球-->
<attr name="thumbColorNormal" format="reference|color"/>
<attr name="thumbColorPressed" format="reference|color"/>
</declare-styleable>```
####3.監(jiān)聽滑桿事件健爬,滑桿滑動變化通過OnRangeBarChangeListener接口來實現(xiàn)對應(yīng)的邏輯
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/3982371-cc462a93735fa7f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####4.設(shè)置滑球上的文字通過setCircleText()方法控乾,只有TextSeekBar支持該方法。
![seekbar.gif](http://upload-images.jianshu.io/upload_images/3982371-6457b1c4f91470fc.gif?imageMogr2/auto-orient/strip)
當(dāng)然類似這方面的自定義View都是通過監(jiān)聽手勢實現(xiàn)對應(yīng)的邏輯娜遵,你可以繼承BaseSeekBar來定義自己的樣式蜕衡。
更多的了解請通過源碼實踐。
<a >我是源碼</a>
<b>如果你喜歡就一起來提供更多人性化的思路设拟,我也將會努力實現(xiàn)更多超強體驗的自定義控件慨仿。</b>