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);