Android UI控件学习(二)——星级评分条
开篇自述
星级评分条与拖动条类似,都允许用户拖动来改变进度,所不同的是,星级评分条通过星星图案表示进度。通常情况下,使用星级评分条表示对某一事物的支持度或某种服务的满意程度等。
因为我上一篇拖动条已经详细介绍过了,这里就简单写了,如果有不懂的,可以先去看一下我上一篇拖动条的那篇文章。
正文——星级评价条
好了,话不多说,我觉得还是直接上例子比较直接。
实例
一样,贴上我的GitHub地址,有兴趣的朋友可以去下载,点这里
项目结构
这里就简单一点,Java文件
layout布局文件
具体代码参考
MainActivity主要代码
/**
* 处理监听事件
*/
class onClickBtn implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
……
case R.id.btn_rating_bar:
openAct(RatingBarActivity.class);//跳转到星级评分条页面
break;
}
}
}
上一篇里面有介绍openAct()方法,在此就不做介绍了。
然后,在layout文件夹里创建一个activity_rating_bar.xml文件,代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="3.5"
android:isIndicator="false"
android:stepSize="0.5"
android:layout_margin="20dp"/>
<Button
android:id="@+id/ratingBar_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/btn_submit"/>
<TextView
android:id="@+id/ratingBar_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前分数:3.5"
android:padding="20dp"/>
</LinearLayout>
这里列一下RatingBar支持的XML属性
XML属性 | 描述 |
---|---|
android:isIndicator | 用于指定该星级评分条是否允许用户改变,true为不允许改变 |
android:numStars | 用于指定该星级评分条总共有多少个星 |
android:rating | 用于指定该星级评分条默认的星级 |
android:stepSize | 用于指定每次最少需要改变多少个星级,默认为0.5个 |
然后,接下来就是创建java文件了,RatingBarActivity主要代码如下
public class RatingBarActivity extends Activity {
private RatingBar ratingBar;
private Button submitBtn;
private TextView ratingBarText;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rating_bar);
init();
}
private void init(){
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
submitBtn = (Button) findViewById(R.id.ratingBar_btn);
ratingBarText = (TextView) findViewById(R.id.ratingBar_tv);
// 给按钮添加监听
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int result = ratingBar.getProgress();//获取进度
float rating = ratingBar.getRating();//获取等级
float step = ratingBar.getStepSize();//获取每次要改变多少个星级
ratingBarText.setText("当前分数:"+rating+"\n进度:"+result+"\n等级:"+rating+"\n每次改变:"+step+"个星级");
}
});
}
}
这里用到三个方法
方法名 | 描述 |
---|---|
getRating() | 用于获取等级,表示选中了几颗星 |
getStepSize() | 用于获取每次最少要改变多少个星级 |
getProgress() | 用于获取进度,进度值为getRating()返回值与getStepSize()返回值之商 |
到此,主要代码就基本完成了,接下来让我们把新建的activity加到AndroidManifest.xml中
<activity android:name=".RatingBarActivity"/>
这里再贴上string.xml文件中用到的常量
<string name="btn_rating_bar">星级评分条</string>
<string name="btn_submit">提交</string>
好了,大功告成。
运行效果
现在,让我们来看一下运行效果怎么样,
首先是刚进来的页面
现在,让我们滑动改变一下看看,当我们改变之后,然后点击提交,可以看到下面会给出消息信息。
结语
到这里,我们的程序就结束了,你也成功了吗,你也可以试着添加一些其他功能,比如单击完提交,用户就不可以再对星级进行修改,等等。
马上过年了,好开心,也祝大家春节快乐,今天回家,嘻嘻……^ U ^……开森,今年的最后一篇博客,也希望明年能变得更好,变得更厉害,早日成为一个大神,你们也是哦,一起加油。