本次视频继续来学习Android基础控件的使用,目的是希望在基础控件的使用中熟悉基本模式。

  • 马上学Android 012 - RatingBar和SeekBar的简单使用

在xml布局文件中添加下面代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:text="给自己的状态评个分吧!"
android:textColor="#FF0000"
android:textSize="25dp"
android:layout_gravity="center" />


<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:isIndicator="false"
android:stepSize="0.5"
android:layout_gravity="center"
android:id="@+id/rtbMyScore" />


<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:text="中华民族复兴进度:..."
android:textColor="#FF0000"
android:textSize="25dp"
android:layout_gravity="center"
android:id="@+id/tvChinaScore" />


<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="65"
android:id="@+id/skbChinaScore" />

需要特别说明的属性有

  1. RatingBar
属性 说明
android:isIndicator RatingBar是否是一个指示器(用户无法进行更改)
android:numStars 显示的星型数量,必须是一个整形值,像“100”。
android:rating 默认的评分,必须是浮点类型,像“1.2”。
android:stepSize 评分的步长,必须是浮点类型,像“1.2”。
  1. SeekBar
属性 说明
android:max 设置最大值
android:progress 设置当前值

在Java代码中,进行相应的事件响应就可以达到目的了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class SecondActivity extends Activity {

private RatingBar rtbMyScore;
private SeekBar skbChinaScore;
private TextView tvChinaScore;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);

rtbMyScore = (RatingBar) findViewById(R.id.rtbMyScore);
skbChinaScore = (SeekBar) findViewById(R.id.skbChinaScore);
tvChinaScore = (TextView) findViewById(R.id.tvChinaScore);

rtbMyScore.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
Toast.makeText(SecondActivity.this, "你给你自己的评分是:" + v, Toast.LENGTH_SHORT).show();
}
});

skbChinaScore.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
tvChinaScore.setText("中华民族复兴进度是:" + i);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});
}
}

需要设置RatingBar的setOnRatingBarChangeListener并重写onRatingChanged方法,设置SeekBar的setOnSeekBarChangeListener并重写下面方法

重写的方法 说明
onStartTrackingTouch 该方法拖动进度条开始拖动的时候调用
onProgressChanged 该方法拖动进度条进度改变的时候调用
onStopTrackingTouch 该方法拖动进度条停止拖动的时候调用

完成上述的代码和布局文件之后,启动应用程序就可以看到下面的效果

Demo