一、先上效果圖片:
?? 第一個是自定義;
?? 第二個是原生的:
?
二、atingBar 介紹:
RatingBar是基于SeekBar和ProgressBar的擴展,用星型來顯示等級評定。使用RatingBar的默認大小時,用戶可以觸摸/拖動或使用鍵來設置評分,它有兩種樣式(小風格用ratingBarStyleSmall,大風格用ratingBarStyleIndicator),其中大的只適合指示,不適合于用戶交互。
當使用可以支持用戶交互的RatingBar時,無論將控件(widgets)放在它的左邊還是右邊都是不合適的。
只有當布局的寬被設置為wrap?content時,設置的星星數量(通過函數setNumStars(int)或者在XML的布局文件中定義)將顯示出來(如果設置為另一種布局寬的話,后果無法預知)。
次級進度一般不應該被修改,因為他僅僅是被當作星型部分內部的填充背景。
三、嵌套類接口:RatingBar.OnRatingBarChangeListener
一個回調函數,當星級進度改變時修改客戶端的星級。
四、XML屬性 屬性名稱 | 描述 |
Android:isIndicator | RatingBar是否是一個指示器(用戶無法進行更改) |
android:numStars | 顯示的星型數量,必須是一個整形值,像“100”。 |
android:rating | 默認的評分,必須是浮點類型,像“1.2”。 |
android:stepSize | 評分的步長,必須是浮點類型,像“1.2”。 |
?
五、公共方法
?
public int getNumStars ()
返回顯示的星型數量
返回值
???????????????? 顯示的星型數量
?
public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()
返回值
監聽器(可能為空)監聽評分改變事件
?
public float getRating ()
獲取當前的評分(填充的星型的數量)
返回值
當前的評分
?
public float getStepSize ()
獲取評分條的步長
返回值
步長
?
public boolean isIndicator ()
返回值
????????????????判斷當前的評分條是否僅僅是一個指示器(注:即能否被修改)
?
public void setIsIndicator (boolean isIndicator)
設置當前的評分條是否僅僅是一個指示器(這樣用戶就不能進行修改操作了)
參數
isIndicator?????? Bool值,是否是一個指示器
?
public synchronized void setMax (int max)
設置評分等級的范圍,從0到max
參數
max?????????評分條最大范圍。
?
public void setNumStars (int numStars)
設置顯示的星型的數量。為了能夠正常顯示它們,建議將當前widget的布局寬度設置為
wrap content
參數
numStars?????????星型的數量
?
public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)
設置當評分等級發生改變時回調的監聽器
參數
listener ?監聽器
?
public void setRating (float rating)
設置分數(星型的數量)
參數
rating??????設置的分數
?
public void setStepSize (float stepSize)
設置當前評分條的步長(step size)
參數
stepSize?評分條的步進。例如:如果想要半個星星,它的值為0.5。
四、XML屬性 屬性名稱 | 描述 |
Android:isIndicator | RatingBar是否是一個指示器(用戶無法進行更改) |
android:numStars | 顯示的星型數量,必須是一個整形值,像“100”。 |
android:rating | 默認的評分,必須是浮點類型,像“1.2”。 |
android:stepSize | 評分的步長,必須是浮點類型,像“1.2”。 |
?
五、公共方法
?
public int getNumStars ()
返回顯示的星型數量
返回值
???????????????? 顯示的星型數量
?
public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()
返回值
監聽器(可能為空)監聽評分改變事件
?
public float getRating ()
獲取當前的評分(填充的星型的數量)
返回值
當前的評分
?
public float getStepSize ()
獲取評分條的步長
返回值
步長
?
public boolean isIndicator ()
返回值
????????????????判斷當前的評分條是否僅僅是一個指示器(注:即能否被修改)
?
public void setIsIndicator (boolean isIndicator)
設置當前的評分條是否僅僅是一個指示器(這樣用戶就不能進行修改操作了)
參數
isIndicator?????? Bool值,是否是一個指示器
?
public synchronized void setMax (int max)
設置評分等級的范圍,從0到max
參數
max?????????評分條最大范圍。
?
public void setNumStars (int numStars)
設置顯示的星型的數量。為了能夠正常顯示它們,建議將當前widget的布局寬度設置為
wrap content
參數
numStars?????????星型的數量
?
public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)
設置當評分等級發生改變時回調的監聽器
參數
listener ?監聽器
?
public void setRating (float rating)
設置分數(星型的數量)
參數
rating??????設置的分數
?
public void setStepSize (float stepSize)
設置當前評分條的步長(step size)
參數
stepSize?評分條的步進。例如:如果想要半個星星,它的值為0.5。
六、android評分條RatingBar自定義設置sdk23 RatingBar為評分條控件,默認效果為若干個灰色的星星,如果想將其換成其他自定義圖片就要自定義它的style。首先是布局文件:
<RatingBarandroid:id="@+id/ratingone"android:numStars="5" 設置星的個數,注意下邊的寬度要設置為wrap_contentandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:rating="3" 設置默認選中星的個數android:stepSize="0.5" 設置評分的間隔,每次增加或者減少多少android:isIndicator="false"/> 設置 不允許用戶進行評分操作,flase 表示允許
?其中android:numStars="5"設置顯示的星星數量為5; android:rating="5"設置選中的數量為5,也就是全部選中
android:isIndicator="true"設置評分條只顯示結果無法通過點擊改變選中狀態。
然后在res/values目錄下建立styles.xml文件 代碼:
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋體';font-size:12.0pt;"><span style="color:#e8bf6a;"><style </span><span style="color:#bababa;">name=</span><span style="color:#6a8759;">"myRatingBarStyle" </span><span style="color:#bababa;">parent=</span><span style="color:#6a8759;">"@android:style/Widget.RatingBar"</span><span style="color:#e8bf6a;">>
</span><span style="color:#e8bf6a;"> <item </span><span style="color:#bababa;">name=</span><span style="color:#6a8759;">"android:progressDrawable"</span><span style="color:#e8bf6a;">></span>@drawable/my_rating_bar<span style="color:#e8bf6a;"></item>
</span><span style="color:#e8bf6a;"> <item </span><span style="color:#bababa;">name=</span><span style="color:#6a8759;">"android:minHeight"</span><span style="color:#e8bf6a;">></span>16dp<span style="color:#e8bf6a;"></item>
</span><span style="color:#e8bf6a;"> <item </span><span style="color:#bababa;">name=</span><span style="color:#6a8759;">"android:maxHeight"</span><span style="color:#e8bf6a;">></span>16dp<span style="color:#e8bf6a;"></item>
</span><span style="color:#e8bf6a;"></style></span>
android:progressDrawable為評分條圖案。接下來在res/drawable目錄下建立my_rating_bar.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="@drawable/star1"></item><item android:id="@android:id/secondaryProgress"android:drawable="@drawable/star1"></item><item android:id="@android:id/progress"android:drawable="@drawable/star2"></item>
</layer-list>
?<item android:id="@+android:id/progress"?android:drawable="@drawable/rating_show" />為設置評分圖案為? rating_show.png,也就是選中時的圖案;
<item android:id="@+android:id/background"?android:drawable="@drawable/rating" />? 為設置背景圖案為 rating.png,也就是為選中時的圖案。