Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android UI(RatingBar)詳解

Android UI(RatingBar)詳解

編輯:關於Android編程

1.概述與應用場景
RatingBar(評分條)他是progressbar和seekbar的擴展,用星型來表示評分等級,同時它有兩種風格,一種可與用戶交互,另一種
只是用於指示,不提供交互(後面會提及)。

2.常用的xml屬性和方法
2.1)常用xml屬性
    android:isIndicator="false":設置是否為指示器,true表示不可與用戶交互
    android:rating="":默認的評分數
    android:stepSize="":步長(點擊一次增長的長度)
    android:numStars="":表示星星的數量,超出顯示范圍是他會以最大數量顯示,然後把星星分成numStars/stepSize份
    style="?android:ratingBarStyleSmall|?android:ratingBarStyleIndicator|?android:ratingBarStyle":風格

2.2)常用方法
 
        //設置是否為指示器模式,及不可交互
        ratingBar1.setIsIndicator(false);
        //設置評分條的最大范圍
        ratingBar1.setMax(20);
        //設置星星數量
        ratingBar1.setNumStars(10);
        //設置當前等級
        ratingBar1.setRating(1);
        //設置步長
        ratingBar1.setStepSize(1);
        //獲取星星數量
        int num = ratingBar.getNumStars();
        //獲取步長
        float step = ratingBar.getStepSize();
        //獲取當前評分,與參數rating一致
        float currentRating = ratingBar.getRating();


3.簡單實用
3.1)布局文件
    



    
    
    
    
    
    
    


3.2)java類文件
package com.example.ratingbar;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RatingBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private RatingBar ratingBar,ratingBar1;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        ratingBar = (RatingBar) findViewById(R.id.ratingBar);
        ratingBar1 = (RatingBar) findViewById(R.id.ratingBar1);
        textView = (TextView) findViewById(R.id.textView);
        //ratingbar的常用方法
        //設置是否為指示器模式,及不可交互
        ratingBar1.setIsIndicator(false);
        //設置評分條的最大范圍
        ratingBar1.setMax(20);
        //設置星星數量
        ratingBar1.setNumStars(10);
        //設置當前等級
        ratingBar1.setRating(1);
        //設置步長
        ratingBar1.setStepSize(1);
        //設置監聽器
        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                //獲取星星數量
                int num = ratingBar.getNumStars();
                //獲取步長
                float step = ratingBar.getStepSize();
                //獲取當前評分,與參數rating一致
               // float currentRating = ratingBar.getRating();
                Log.d("debug","num="+num+",step="+step+",rating="+rating);
                textView.setText(""+rating);
            }
        });
    }
}

3.3)效果截圖
\
4.自定義RatingBar
4.1)導入兩張分別為選擇和未選中的圖片rating.png rating_selected.png

4.2)定義rating_layer.xml






4.3)在styles.xml實現自定義的RatingBar style


    
    


4.4)主布局activity_second中應用style



    
    


4.5)主Activity的java類SecondActivity.java

package com.example.ratingbar;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {
    private RatingBar ratingBar,ratingBar1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        //初始化控件
        ratingBar = (RatingBar) findViewById(R.id.ratingBar);

        //設置監聽器
        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                Toast.makeText(SecondActivity.this,"點擊了RatingBar",Toast.LENGTH_SHORT).show();
            }
        });
    }
}


4.6)效果截圖
\
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved