Android常用高级组件之星级滑块
1.RatingBar类简介
RatingBar是另一种滑块,它位于andorid.widget包下,外观是五个星星,可以通过拖动来改变进度,除图片形式外,还有较小的以及较大的两种表现形式。
RatingBar的继承关系 Java.lang.Object/Android.view.View/andorid.widget.ProgressBar/android.widget.AbsSeekBar/andorid.widget.RatingBar
2.main.xml布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <ProgressBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ProgressBar01" android:max="100" android:progress="20" style="@android:style/Widget.ProgressBar.Horizontal" /> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/RatingBar01" android:max="5" android:rating="1" /> </LinearLayout>
2.逻辑代码如下:
package com.example.sample_5_6; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.ProgressBar; import android.widget.RatingBar; public class Sample_5_6 extends Activity { final static double MAX_STAR = 5; final static double MAX = 100; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); RatingBar rb = (RatingBar)findViewById(R.id.RatingBar01); rb.setOnRatingBarChangeListener( new RatingBar.OnRatingBarChangeListener() { public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { ProgressBar pb = (ProgressBar)findViewById(R.id.ProgressBar01); RatingBar rb = (RatingBar)findViewById(R.id.RatingBar01); float rate = rb.getRating(); pb.setProgress((int)((rate/MAX_STAR)*MAX));//将星星数折算成0-100进度值 } }); } public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
3.运行结果略.