RatingBar是ProgressBar的一個延伸,ProgressBar的進度一般由代碼控制,RatingBar的進度可以拖拽來控制。
默認效果如下:
看到這個效果圖之後,您可能會想到打車軟件和訂餐軟件上打五星好評的UI了吧,RatingBar可以完美實現這個效果。
(1)監聽
監聽RatingBar進度情況的代碼如下:
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
}
});
rating
參數爲當前進度值。
(2)RatingBar的4個屬性
- android:isIndicator
RatingBar的指示是否起作用,默認爲false,如果爲true,RatingBar的進度不能被人爲修改。
- android:numStars
顯示星星的總數量,必須爲整數。
- android:rating
設置默認評分值,值爲浮點數。
- android:stepSize
評分每次增加的值(最小變化值),值爲浮點數。
(3)系統樣式
系統樣式有三種:
- 默認樣式
style="?attr/ratingBarStyle"
或
style="@style/Widget.AppCompat.RatingBar"
- 指示器樣式
style="?attr/ratingBarStyleIndicator"
或
style="@style/Widget.AppCompat.RatingBar.Indicator"
- 小型樣式
style="?attr/ratingBarStyleSmall"
或
style="@style/Widget.AppCompat.RatingBar.Small"
(4)progressDrawable的使用
系統無樣式往往還無法滿足大部分需求,如果需要將星星換成其它圖案呢?
使用progressDrawable
屬性,設置RatingBar的背景樣式。效果圖如下:
代碼如下:
android:progressDrawable="@drawable/ratingbar_bg"
ratingbar_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@mipmap/xiong_off"/>
<item
android:id="@android:id/progress"
android:drawable="@mipmap/xiong_on"/>
</layer-list>
兩張圖片如下:
[本章完...]