ProgressBar、RatingBar和Spinner控件

时间:2024-06-03 18:07:44

1、ProgressBar、SeekBar与RatingBar控件

ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等。SeekBar控件,滑块控件,可以根据用户的需要动态为赋值。本例子就是拖动SeekBar,让进度条实时显示拖动的进度。RatingBar控件,星条控件,我们经常见到的打分控件,五颗星星。下面是main.xml页面的代码。我们声明了几个控件。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <ProgressBar
android:id="@+id/progressBar1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="68dp"
android:background="@drawable/color" /> <SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/progressBar1"
android:layout_marginTop="48dp" /> <RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/seekBar1"
android:layout_below="@+id/seekBar1"
android:layout_marginTop="68dp" /> <ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/ratingBar1" /> </RelativeLayout>

控件生成

这里我们只需要捕捉seekbar的拖动事件以及RatingBar控件的事件。SeekBar的事件是setOnSeekBarChangeListener,而Ratingbar的事件为setOnRatingBarChangeListener。

     protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SeekBar seek=(SeekBar)findViewById(R.id.seekBar1);
final ProgressBar process=(ProgressBar)findViewById(R.id.progressBar2);
final RatingBar rating=(RatingBar)findViewById(R.id.ratingBar1);
rating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
// TODO 自动生成的方法存根
float rate=ratingBar.getRating();
process.setProgress((int)(rate/5*100));
}
}); seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO 自动生成的方法存根
process.setProgress(seek.getProgress());
} @Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO 自动生成的方法存根 } @Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO 自动生成的方法存根 }
});
}

事件监听

这样我们就对进度条的控件有了初步了解。

2.Spinner控件

Spinner控件,下拉列表控件,和ComBox控件有点相似,使用的时候,也需要为他制定item。通过在String.xml

文件中添加新的字符串资源。在后台通过适配器将资源绑定给spinner控件。

     BaseAdapter baseA=new BaseAdapter(){

                 @Override
public int getCount() {
// TODO 自动生成的方法存根
return strid.length;
} @Override
public Object getItem(int position) {
// TODO 自动生成的方法存根
return null;
} @Override
public long getItemId(int position) {
// TODO 自动生成的方法存根
return 0;
} @Override
public View getView(int position, View convertView,
ViewGroup parent) {
// TODO 自动生成的方法存根
LinearLayout li=new LinearLayout(MainActivity.this);
TextView text1=new TextView(MainActivity.this);
text1.setText(" "+getResources().getText(strid[position]));
text1.setTextSize(24);
li.addView(text1);
return li;
}};
spinner.setAdapter(baseA);

适配器绑定