Android 中文 API (40) —— RatingBar

 

前言html

  本章內容是 android.widget.RatingBar,譯爲"評分條",版本爲Android 2.2 r1,翻譯來自"madgoat"和"wallace2010",歡迎你們訪問他們的博客:http://madgoat.cn/http://blog.csdn.net/springiscoming2008,再次感謝"madgoat"和"wallace2010" !期待你加入Android中文翻譯組,聯繫我over140@gmail.com。
 java

 

聲明android

  歡迎轉載,但請保留文章原始出處:)
 spring

    農民伯伯:http://over140.blog.51cto.com/ide

    Android中文翻譯組:http://www.cnblogs.com/over140/  函數

 

正文佈局

  1、結構學習

    public class RatingBar extends AbsSeekBarui

 
 

    java.lang.Objectthis

          android.view.View

                   android.widget.ProgressBar

                        android.widget.AbsSeekBar

                               android.widget.RatingBar

 

 

  2、概述

 

 

RatingBar是基於SeekBarProgressBar的擴展,用星型來顯示等級評定。使用RatingBar的默認大小時,用戶能夠觸摸/拖動或使用鍵來設置評分,它有兩種樣式(小風格用ratingBarStyleSmall,大風格用ratingBarStyleIndicator),其中大的只適合指示,不適合於用戶交互。

  當使用能夠支持用戶交互的RatingBar時,不管將控件(widgets)放在它的左邊仍是右邊都是不合適的。

  只有當佈局的寬被設置爲wrap content時,設置的星星數量(經過函數setNumStars(int)或者在XML的佈局文件中定義)將顯示出來(若是設置爲另外一種佈局寬的話,後果沒法預知)。

  次級進度通常不該該被修改,由於他僅僅是被看成星型部份內部的填充背景。

  參見Form Stuff tutorial.

 

  3、嵌套類
 

  接口:RatingBar.OnRatingBarChangeListener

  一個回調函數,當星級進度改變時修改客戶端的星級。

 

  4、XML屬性

屬性名稱

描述

android:isIndicator

RatingBar是不是一個指示器(用戶沒法進行更改)

android:numStars

顯示的星型數量必須是一個×××值,像「100」。

android:rating

默認的評分,必須是浮點類型,像「1.2」。

android:stepSize

評分的步長必須是浮點類型,像「1.2」。

 

  5、公共方法

 

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)

  設置評分等級的範圍,從0max

  參數

  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


 

  6、受保護方法

 

  protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

  權衡 view content 來決定它的寬度和高度的整齊。它被measure(int, int) 調用 而且應該被子類所覆蓋,以便提供準確高效的佈局測量。

  規定: 當覆蓋這個方法的時候,你必須調用 setMeasuredDimension(int, int)以便存儲精確的視圖的寬和高。若是不這樣作的話將觸發llegalStateException異常,被函數 measure(int, int)拋出。調用父類 onMeasure(int, int)是合理的。

  尺寸的基本類的實現默認是背景大小,除非經過MeasureSpec容許大的尺寸。子類應該覆蓋 onMeasure(int, int) 以便提供更好的佈局大小。

若是這個方法被覆蓋,子類應該負責確保標準的寬和高至少是視圖的最小寬度和高度的值(分別爲getSuggestedMinimumHeight() getSuggestedMinimumWidth()兩方法)。

    參數

           widthMeasureSpec     受主窗口支配的水平空間要求。這個需求經過 View.MeasureSpec.進行編碼。

             heightMeasureSpec   受主窗口支配的垂直空間要求。這個需求經過 View.MeasureSpec.進行編碼。 

 

  7、補充

    文章連接
 

                   Android 控件之RatingBar評分條

                   Android更換RatingBar圖片

                   [Android學習指南]RatingBar 評分條

    示例代碼代碼轉載自Android手機開發者論壇

      Java文件

public   class  AndroidRatingBar  extends  Activity {
   
/**  Called when the activity is first created.  */
   @Override
   
public   void  onCreate(Bundle savedInstanceState) {
       
super .onCreate(savedInstanceState);
       setContentView(R.layout.main);

       
final  RatingBar ratingBar_Small  =  (RatingBar)findViewById(R.id.ratingbar_Small);
       
final  RatingBar ratingBar_Indicator  =  (RatingBar)findViewById(R.id.ratingbar_Indicator);
       
final  RatingBar ratingBar_default  =  (RatingBar)findViewById(R.id.ratingbar_default);

       ratingBar_default.setOnRatingBarChangeListener(
new  RatingBar.OnRatingBarChangeListener(){

   
public   void  onRatingChanged(RatingBar ratingBar,  float  rating,
     
boolean  fromUser) {
    ratingBar_Small.setRating(rating);
    ratingBar_Indicator.setRating(rating);
    Toast.makeText(AndroidRatingBar.
this " rating: " + String.valueOf(rating),
      Toast.LENGTH_LONG).show();
   }});
   }
}

      XML文件

<? xml version="1.0" encoding="utf-8" ?>
< LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"
   android:orientation
="vertical"
   android:layout_width
="fill_parent"
   android:layout_height
="fill_parent"
   
>
< TextView 
   
android:layout_width ="fill_parent"
   android:layout_height
="wrap_content"
   android:text
="@string/hello"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyleIndicator"
   android:id
="@+id/ratingbar_Indicator"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyleSmall"
   android:id
="@+id/ratingbar_Small"
   android:numStars
="20"
   
/>
< RatingBar 
   
android:layout_width ="wrap_content"
   android:layout_height
="wrap_content"
   style
="?android:attr/ratingBarStyle"
   android:id
="@+id/ratingbar_default"
   
/>
</ LinearLayout >

 

結束

  本文爲"madgoat"和"wallace2010"聯合署名,緣由是翻譯重了,不過兩個翻譯得都很好,這樣翻譯重的事件也將隨着管理的完善得意解決,感謝兩位的相互理解,感謝你們的支持!  

相關文章
相關標籤/搜索