RatingBar是基于SeekBar(拖動條)和ProgressBar(狀態(tài)條)的擴展痢艺,用星形來顯示等級評定浮驳!
RatingBar實現(xiàn)的效果圖:
? ? ? 看著自定義的樣式遠遠比Android自帶的樣式好看多了占婉,用戶體驗度遠遠提升,下面我們就來實現(xiàn)該控件:
? 定義根據圖片自定一個RatingBar的背景條,和圖片放到同一個目錄下面
? ? ?five_rating_bar.xml
<layer-list?xmlns:android="http://schemas.android.com/apk/res/android">
? ? <item ?android:id="@android:id/background"
? ? ? ? ? ? ? ?android:drawable="@drawable/star_border_hide"/>
? ? <item ?android:id="@android:id/secondaryProgress"
? ? ? ? ? ? ? ? android:drawable="@drawable/star_border_hide"/>
? ? ?<item android:id="@android:id/progress"
? ? ? ? ? ? ? ? android:drawable="@drawable/star_border_show"/>
</layer-list>
backgroud:是用來填充背景圖片的淫半,和進度條非常類似,當我們設置最高評分時(android:numStars)匣砖,系統(tǒng)就會根據我們的設置科吭,來畫出以星星為單位的背景(假如android:numStars="5",就會畫出5顆灰色的星星)
progress:是用來在背景圖片基礎上進行填充的指示屬性(和進度條類似猴鲫,第一進度位置)
secondaryProgress:同progress一樣屬于第二進度位置(如果不定義這個对人,進度條拖動,每次就畫出一整顆星星(亮)拂共,第二進度(暗)沒有覆蓋掉第一進度之后的位置牺弄,從左往右是拖不出來N.5顆星星的,這樣評分效果就不完整)
? ? style.xml
<style ? name="fiveRatingBar"parent="@android:style/Widget.RatingBar">
? ? ? ?<item ? name="android:progressDrawable">@drawable/five_rating_bar</item>
? ? ? ?<item ? name="android:minHeight">20dp</item>
? ? ? ?<item ? name="android:maxHeight">20dp</item>
</style>
? ? ? 提取樣式屬于個人習慣匣缘,這里可以不提取出來猖闪,可以寫在布局文件中鲜棠,這里RatingBar的樣式是通過style來切換的。
? ? 通過 parent屬性來選擇繼承的父類培慌,我們這里繼承RatingBar類豁陆。
? ? 重新定義 progressDrawable屬性(RatingBar的背景條)
? ? maxHeight和minHeight可以根據我們圖片像素或者其他參考值來設定。
在我們需要用到RatingBar的xml配置文件里面添加RatingBar控件吵护。
? ? ?main.xml
<RatingBar
? ? ? ? android:id="@+id/rc_rate"
? ? ? ?android:layout_width="wrap_content"
? ? ? android:layout_height="wrap_content"
? ? ? style="@style/fiveRatingBar"
? ? ? android:layout_gravity="center"
? ? ? android:numStars="5"
? ? ? android:layout_marginLeft="10dp"
? ? ? android:rating="4"/>
常用屬性:
android:isIndicator ? ? ? ? ? ??RatingBar是否是一個指示器(用戶無法進行更改)
android:numStars ? ? ? ? ? ? ?顯示的星型數量盒音,必須是一個整形值,像“100”馅而。
android:rating ? ? ? ? ? ? ? ? ??默認的評分祥诽,必須是浮點類型,像“1.2”瓮恭。
android:stepSize ? ? ? ? ? ? ? ?評分的步長雄坪,必須是浮點類型,像“1.2”屯蹦。
就這么簡單维哈,我們自定義屬于自己的RatingBar,星級評分控件登澜!