ProgressBar、RatingBar和Spinner控件
时间:2022-04-29
本文章向大家介绍ProgressBar、RatingBar和Spinner控件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、ProgressBar、SeekBar与RatingBar控件
ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等。SeekBar控件,滑块控件,可以根据用户的需要动态为赋值。本例子就是拖动SeekBar,让进度条实时显示拖动的进度。RatingBar控件,星条控件,我们经常见到的打分控件,五颗星星。下面是main.xml页面的代码。我们声明了几个控件。
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context=".MainActivity" >
10
11 <TextView
12 android:id="@+id/textView1"
13 android:layout_width="wrap_content"
14 android:layout_height="wrap_content"
15 android:text="@string/hello_world" />
16
17 <ProgressBar
18 android:id="@+id/progressBar1"
19 android:layout_width="fill_parent"
20 android:layout_height="wrap_content"
21 android:layout_alignParentLeft="true"
22 android:layout_below="@+id/textView1"
23 android:layout_marginTop="68dp"
24 android:background="@drawable/color" />
25
26 <SeekBar
27 android:id="@+id/seekBar1"
28 android:layout_width="match_parent"
29 android:layout_height="wrap_content"
30 android:layout_alignParentLeft="true"
31 android:layout_alignParentRight="true"
32 android:layout_below="@+id/progressBar1"
33 android:layout_marginTop="48dp" />
34
35 <RatingBar
36 android:id="@+id/ratingBar1"
37 android:layout_width="wrap_content"
38 android:layout_height="wrap_content"
39 android:layout_alignLeft="@+id/seekBar1"
40 android:layout_below="@+id/seekBar1"
41 android:layout_marginTop="68dp" />
42
43 <ProgressBar
44 android:id="@+id/progressBar2"
45 style="?android:attr/progressBarStyleHorizontal"
46 android:layout_width="fill_parent"
47 android:layout_height="wrap_content"
48 android:layout_alignParentRight="true"
49 android:layout_below="@+id/ratingBar1" />
50
51 </RelativeLayout>
这里我们只需要捕捉seekbar的拖动事件以及RatingBar控件的事件。SeekBar的事件是setOnSeekBarChangeListener,而Ratingbar的事件为setOnRatingBarChangeListener。
1 protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.activity_main);
4 final SeekBar seek=(SeekBar)findViewById(R.id.seekBar1);
5 final ProgressBar process=(ProgressBar)findViewById(R.id.progressBar2);
6 final RatingBar rating=(RatingBar)findViewById(R.id.ratingBar1);
7 rating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
8
9 @Override
10 public void onRatingChanged(RatingBar ratingBar, float rating,
11 boolean fromUser) {
12 // TODO 自动生成的方法存根
13 float rate=ratingBar.getRating();
14 process.setProgress((int)(rate/5*100));
15 }
16 });
17
18 seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
19
20 @Override
21 public void onStopTrackingTouch(SeekBar seekBar) {
22 // TODO 自动生成的方法存根
23 process.setProgress(seek.getProgress());
24 }
25
26 @Override
27 public void onStartTrackingTouch(SeekBar seekBar) {
28 // TODO 自动生成的方法存根
29
30 }
31
32 @Override
33 public void onProgressChanged(SeekBar seekBar, int progress,
34 boolean fromUser) {
35 // TODO 自动生成的方法存根
36
37 }
38 });
39 }
这样我们就对进度条的控件有了初步了解。
2.Spinner控件
Spinner控件,下拉列表控件,和ComBox控件有点相似,使用的时候,也需要为他制定item。通过在String.xml
文件中添加新的字符串资源。在后台通过适配器将资源绑定给spinner控件。
1 BaseAdapter baseA=new BaseAdapter(){
2
3 @Override
4 public int getCount() {
5 // TODO 自动生成的方法存根
6 return strid.length;
7 }
8
9 @Override
10 public Object getItem(int position) {
11 // TODO 自动生成的方法存根
12 return null;
13 }
14
15 @Override
16 public long getItemId(int position) {
17 // TODO 自动生成的方法存根
18 return 0;
19 }
20
21 @Override
22 public View getView(int position, View convertView,
23 ViewGroup parent) {
24 // TODO 自动生成的方法存根
25 LinearLayout li=new LinearLayout(MainActivity.this);
26 TextView text1=new TextView(MainActivity.this);
27 text1.setText(" "+getResources().getText(strid[position]));
28 text1.setTextSize(24);
29 li.addView(text1);
30 return li;
31 }};
32 spinner.setAdapter(baseA);
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 『.Net反射』ILGenerator.Emit 动态MSIL 编程
- Spring通过XML配置文件以及通过注解形式来AOP 来实现前置,后置,环绕,异常通知
- 切面编程(环绕通知与前后置通知区别)
- Spring在代码中获取bean的几种方式
- Spring 一个接口多个实现类怎么注入
- ASP.NET MVC Controller的激活
- js 逗号表达式
- spring动态调用方法
- Spring AOP动态代理原理与实现方式
- 基于注解多数据源解决方案
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- 你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
- java阻塞队列得实现
- 谈谈如何利用 valgrind 排查内存错误
- 用java写一个死锁