首页 > 代码库 > ProgressBar、RatingBar和Spinner控件

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     <TextView12         android:id="@+id/textView1"13         android:layout_width="wrap_content"14         android:layout_height="wrap_content"15         android:text="@string/hello_world" />16 17     <ProgressBar18         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     <SeekBar27         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     <RatingBar36         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     <ProgressBar44         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             @Override10             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             @Override21             public void onStopTrackingTouch(SeekBar seekBar) {22                 // TODO 自动生成的方法存根23                 process.setProgress(seek.getProgress());24             }25             26             @Override27             public void onStartTrackingTouch(SeekBar seekBar) {28                 // TODO 自动生成的方法存根29                 30             }31             32             @Override33             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                 @Override10                 public Object getItem(int position) {11                     // TODO 自动生成的方法存根12                     return null;13                 }14 15                 @Override16                 public long getItemId(int position) {17                     // TODO 自动生成的方法存根18                     return 0;19                 }20 21                 @Override22                 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);
适配器绑定