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

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

RatingBar支持的經常使用XML屬性ide

XML屬性佈局

說明spa

android:isIndicatorcode

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

android:numStarsblog

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

android:rating圖片

設置該星級評分條默認的星級utf-8

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,最少半個星級。

運行程序截圖以下

 

 

相關文章
相關標籤/搜索