星級評分條(RatingBar)的功能與用法


星級評分條與拖動條有相同的父類:AbsSeekBar,因此它們十分相似。實際上星際評分條與拖動條的用法、功能都十分接近:它們都允許用戶通過拖動來改變進度。RatingBar與SeekBar的最大區別在於:RatingBar通過星星來表示進度。

RatingBar支持的常用XML屬性

XML屬性

說明

android:isIndicator

設置該星級評分條是否允許用戶改變(true為不允許修改)

android:numStars

設置該星機評分條總共有多少個星級

android:rating

設置該星級評分條默認的星級

android:stepSize

設置每次最少需要改變多少個星級

為了讓程序能響應星級評分條評分的改變,可以考慮為它綁定一個OnRatingBarChangeListener監聽器。

下面通過實例來示范RatingBar的功能與用法。

實例:通過星級改變圖片的透明度

界面布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:src="@drawable/lijiang"/>
    <!--定義一個拖動條,並改變它的滑塊外觀-->
    <RatingBar
        android:id="@+id/rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:max="255"
        android:progress="255"
        android:stepSize="0.5"/>
</LinearLayout>

上面的布局文件中指定了該星際評分條的最大值為255,當前進度為255。其中兩個屬性都來自ProgressBar組件,這沒有任何問題,因為RatingBar本來就是一個特殊的ProgressBar。

主程序只用為RatingBar綁定事件監聽器,即可監聽星級評分條的星級改變。主程序如下

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ImageView image = findViewById(R.id.image);
        RatingBar ratingBar = findViewById(R.id.rating);
        ratingBar.setOnRatingBarChangeListener((bar, rating, fromUser)->{
            //當星級評分條的評分發生改變時觸發該方法
            //動態改變圖片的透明度,其中255是星級評分條的最大值
            //5顆星星就代表最大值255
            image.setImageAlpha((int)(rating * 255 / 5));
        });
    }
}

上面定義了RatingBar時指定了android:stepSize="0.5",由此改星級評分條中星級的最小改變值為0.5,最少半個星級。

運行程序截圖如下

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM