Android 学习笔记(6)—— SeekBar(进度条)/RatingBar(星级评分条)

作者:夏至  欢迎转载,也请保留这段申明,谢谢

1.SeekBar(进度条)

SeekBar即所谓的进度条啦,大家应该对它都不陌生,我们的音乐播放器中的音量调节和视频播放时的进度条都是用它来显示的,这里我们简单的应用这个Demo实现上诉的内容。先来看个效果图和API中的关系图

可以看到第二个继承关系图中,seekbar是属于progressbar的子类,那我们上一节progressbar中的属性,这里都是可以调用的。

Ok,这里我们先来写布局程序

  1. <TextView
  2.     android:id="@+id/text1"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="wrap_content"/>
  5. <TextView
  6.     android:id="@+id/text2"
  7.     android:layout_width="match_parent"
  8.     android:layout_height="wrap_content"/>
  9. <SeekBar
  10.     android:id="@+id/seekbar1"
  11.     android:layout_width="match_parent"
  12.     android:layout_height="wrap_content"
  13.     android:max="100"
  14.     android:progress="20"
  15. />
  16. <SeekBar
  17.     android:id="@+id/seekbar2"
  18.     android:layout_width="match_parent"
  19.     android:layout_height="wrap_content"
  20.     android:layout_marginTop="10dp"
  21.     android:max="100"
  22.     android:progress="20"
  23.     android:secondaryProgress="30"
  24. />

其中,如果我们觉得上面的空间太难看,也可以用android:thumb="@drawable/" 来自定义图片,不过一般图片太大,又不能自动缩放,所以也少用就是了。

SeekBar的方法

onProgressChanged:进度发生改变时会触发

    onStartTrackingTouch:按住SeekBar时会触发

    onStopTrackingTouch:放开SeekBar时触发


那么我们来看主活动的程序

  1. textView1 = (TextView)findViewById(R.id.text1);
  2. textView2 = (TextView)findViewById(R.id.text2);
  3. seekBar1 = (SeekBar)findViewById(R.id.seekbar1);
  4. seekBar2 = (SeekBar)findViewById(R.id.seekbar2);
  5. seekBar1.setOnSeekBarChangeListener(this);
  6. seekBar2.setOnSeekBarChangeListener(this);
  7. //当滑条发生变化时的事件
  8. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  9. switch (seekBar.getId()){
  10.     case R.id.seekbar1:
  11.         textView1.setText("滑条1当前进度 : "+progress+"%");
  12. break;
  13. case R.id.seekbar2:
  14.         textView2.setText("滑条2当前进度 : " + progress + "%");
  15.         //seekBar2.getProgress()+(int)(seekBar2.getProgress()*0.3) 显示缓冲条
  16.         seekBar2.setSecondaryProgress(seekBar2.getProgress()+(int)(seekBar2.getProgress()*0.3));
  17. break;
  18.     }
  19. }
  20. @Override
  21. public void onStartTrackingTouch(SeekBar seekBar) {
  22. switch (seekBar.getId()){
  23.     case R.id.seekbar1:
  24.         textView1.setText("滑条1开始滑动" );
  25. break;
  26. case R.id.seekbar2:
  27.         textView2.setText("滑条2开始滑动 ");
  28. break;
  29.     }
  30. }
  31. @Override
  32. public void onStopTrackingTouch(SeekBar seekBar) {
  33. switch (seekBar.getId()){
  34.     case R.id.seekbar1:
  35.         textView1.setText("滑条1停止滑动" );
  36. break;
  37. case R.id.seekbar2:
  38.         textView2.setText("滑条2停止滑动 ");
  39. break;
  40.     }
  41. }

这样就实现上面的功能啦。效果如图:

2.RatingBar(星级评分条)

星级评分条,对我们这些宅男来说,淘宝某道具店里,总能看到我们的评分。由于ratingbar都是progressbar的子类,很多东西都是一样。

我们来实现上面的功能。首先,还是先写布局文件

  1. <TextView
  2.     android:layout_width="match_parent"
  3.     android:layout_height="wrap_content"
  4.     android:text="请为我的Demo评分"
  5.     android:textSize="24sp"
  6. />
  7. <RatingBar
  8.     android:id="@+id/ratingbar"
  9.     android:layout_width="wrap_content"
  10.     android:layout_height="wrap_content"
  11. />

接着就是主活动的程序,这里只需要在SeekBar 那里修改一下就行。

  1. RatingBar ratingBar = (RatingBar)findViewById(R.id.ratingbar);
  2. ratingBar.setOnRatingBarChangeListener(this);
  3. }
  4. @Override
  5. //ratingBar 几星
  6. public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
  7. Toast.makeText(MainActivity.this,"你的评分是: "+rating+"星",
  8. Toast.LENGTH_SHORT).show();
  9. }

是不是超级简单 ,好了,实践一下吧。

如有错误,欢迎指出,如果喜欢,欢迎收藏!

来自为知笔记(Wiz)

时间: 2024-08-05 07:08:14

Android 学习笔记(6)—— SeekBar(进度条)/RatingBar(星级评分条)的相关文章

Android学习笔记_76_Android ProgressBar 进度条

android 进度条的样式  例1:(默认样式(中等圆形))Xml代码 <ProgressBar      android:id="@+id/progressBar1"     android:layout_width="wrap_content"      android:layout_height="wrap_content"      /> 例2:(超大圆形)Xml代码 <ProgressBar      android

【Android】下拉列表、拖动条、星级评分条与标签文本的触摸事件

下拉列表.拖动条与星级评分条都是Android中的一些基本组件. 写一个小小的程序,来说明其用法. 如下图: 当下拉列表有值选定之后,则弹出相应的提示信息,哪个值被选择.星际评分条也一样,获取用户选择的星数. 标签文本被触摸则显示其被触摸. 滑动条,在拖动的时候,则在标签文本显示其值.因为,如果用弹出消息显示其滑动值,很不顺畅. 首先,把res\values\strings.xml,修改成如下代码: <?xml version="1.0" encoding="utf-8

UI组件之ProgressBar及其子类(二)SeekBar拖动条和RatingBar星级评分条的使用

拖动条采用拖动滑块的位置来表示数值 SeekBar的常用xml属性值: 重要的android:thumb制定一个Drawable对象,改变滑块外观 通过滑块来改变图片的透明度: main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

Android基础控件RatingBar星级评分条的使用

1.简介 RatingBar继承ProgressBar,除了ProgressBar的属性外还有特有属性: android:isIndicator:是否用作指示,用户无法更改,默认false android:numStars:显示多少个星星,必须为整数 android:rating:默认评分值,必须为浮点数 android:stepSize: 评分每次增加的值,必须为浮点数 OnRatingBarChangeListener //事件处理 2.简单使用 1)星条的drawable资源layer-l

Android基础入门教程——2.3.9 RatingBar(星级评分条)

Android基础入门教程--2.3.9 RatingBar(星级评分条) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的SeekBar是不是很轻松咧,本节我们学的这个RatingBar(星级评分条)也非常简单,相信在某宝, 买过东西的对这个应该不陌生,收到卖家的包裹,里面很多时候会有个小纸片,五星好评返还多少元这样, 而评分的时候就可以用到我们这个星级评分条了~先来瞅瞅官方文档 官方文档:RatingBar 我们可以看到,这玩意和SeekBar的类结构是一样的,也是Pro

Android学习笔记(24):进度条组件ProgressBar及其子类

ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条). ProgressBar支持的XML属性: Attribute Name Related Method Description style 设置ProgressBar指定风格 android:indeterminate 设置为true时,进度条不显示运行进度 android:indeterminateBehavior indeterminate模式下.当进度条达到最大值时的动画处理行为

Android学习笔记18:自定义Seekbar拖动条式样

Android学习笔记18:自定义Seekbar拖动条式样

Android学习笔记(九)——更复杂的进度对话框

显示操作进度的对话框 1.使用上一篇创建的同一项目,在activity_main.xml文件中添加一个Button: <Button android:id="@+id/btn_dialog3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="onClick3" android:text=&qu

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学