一、先上效果圖片:
第一個是自定義;
第二個是原生的:
二、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。首先是布局文件:
<RatingBar android:id="@+id/ratingone" android:numStars="5" 設置星的個數,注意下邊的寬度要設置為wrap_content android: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,也就是為選中時的圖案。