源码下载:
拉列表控件Spinner:点击打开链接
进度条ProgressBar:点击打开链接
滑块控件SeekBar:点击打开链接
评分控件RatingBar :点击打开链接
一.Spinner概述
Spinner是一个下拉框的控件,当用户选择的时候,可以提供一个下拉列表将所有可选的项列出来,每次只能选择一项。它的项来自于与之相关联的适配器中。Spinner的使用,可以极大提高用户的体验性。
下拉列表(Spinner)是AdapterView的子类,是一个每次只能选择所有项中一项的部件。它的项来自于与之相关联的适配器中。类似于桌面程序的组合框(ComboBox),但没有组合框的下拉菜单,而是使用浮动菜单为用户提供选择。Spinner数据由Adapter提供,通过Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值
调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入。
</LinearLayout>
2、引用XML描述的Spinner控件,并程序处理:
public class SpinnerActivity extends Activity {
private static final String TAG = "SpinnerActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner);
//第二个参数为下拉列表框每一项的界面样式,该界面样式由Android系统提供,当然您也可以自定义
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("java");
adapter.add("dotNet");
adapter.add("php");
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
Spinner spinner = (Spinner)adapterView;
String itemContent = (String)adapterView.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> view) {
Log.i(TAG, view.getClass().getName());
}
});
}
}
二.进度条ProgressBar
Android的Widget,有许多是为了与User交互而特别设计的,但也有部分是作为程序提示、显示程序运行状态的Widget。现在介绍的范例,ProgressDialog对话框的应用目的相似,的ProgressDialog是继承自 Android.app.ProgressDialog所设计的互动对话窗口,在应用时,必须新建ProgressDialog对象,在运行时会弹出“对话框”作为提醒,此时应用程序后台失去焦点,直到进程结束后,才会将控制权交给应用程序,如果在Activity当中不希望后台失焦,又希望提示User有某后台程序正处于忙碌阶段,此时,ProgressBar就会派上用场了。
Android提供的ProgressBar Widget控件与ProgressDialog应用目标不同,在程序一开始即可在main.xml Layout当中布局,先将部署在Layout里的ProgressBar的属性设为隐藏(一开始看不见),而后使用进程来“假装”程序忙碌中,但不同的是,可在进程当中取得运行时的进度,在“运行”的过程中,将运行进度通过TextView显示出来。本范例除了学习ProgressBar Widget的显示及使用之外,另一个学习关键则是Handler的使用,因为新起的进程无法访问Activity里的Widget,也无法将运行状态外送出来,所以需要通过Handler及Message对象,将进程里的状态往外传递,最后由Activity的Handler事件接收取得运行的状态。
ProgressBar控件该类型进度条就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中。位于android.widget包下
ProgressBar控件通用的方法,具体如下:
1)在布局xml文件中添加进度条代码:
<ProgressBar android:layout_width="fill_parent"
android:layout_height="20px"
style="?android:attr/progressBarStyleHorizontal"
android:id="@+id/downloadbar"/>
2)引用XML文件控件,在代码中操作进度条:
ProgressBar.setMax(100);//设置总长度为100getSecondaryProgress():返回次要进度
ProgressBar.setProgress(0);//设置已经开启长度为0,假设设置为50,进度条将进行到一半android:progressBarStyle:默认进度条样式
ndroid:progressBarStyleHorizontal:水平样式
getMax():返回这个进度条的范围的上限
getProgress():返回进度
setVisibility(int v):设置该进度条是否可视
三.滑块控件SeekBar:
SeekBar是ProgressBar的扩展,位于android.widget包中,在其基础上增加了一个可拖动的thumb(就是那个可拖动的图标)。用户可以触摸thumb并向左或向右拖动,或者可以使用方向键都可以设置当前的进度等级。
SeekBar可以附加一个SeekBar.OnSeekBarChangeListener以获得用户操作的通知
通过SeekBar.getProgress()方法获取拖动条当前值
通过调用setOnSeekBarChangeListener()方法,处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入
SeekBar通用的方法及步骤如下:
1、用XML描述SeekBar控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<SeekBar
android:id="@+id/seekBar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<Button android:id="@+id/seekBarButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="获取值"
/>
</LinearLayout>
2、引用XML描述的控件,程序代码处理:
public class SeekBarActivity extends Activity {
private SeekBar seekBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seekbar);
seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setMax(100);//设置最大刻度
seekBar.setProgress(30);//设置当前刻度
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
Log.v("onProgressChanged()", String.valueOf(progress) + ", " + String.valueOf(fromTouch));
}
public void onStartTrackingTouch(SeekBar seekBar) {//开始拖动
Log.v("onStartTrackingTouch()", String.valueOf(seekBar.getProgress()));
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {//结束拖动
Log.v("onStopTrackingTouch()", String.valueOf(seekBar.getProgress()));
}
});
Button button = (Button)this.findViewById(R.id.seekBarButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SeekBarActivity.this, String.valueOf(seekBar.getProgress()), 1).show();
}
});
}
}
(四)评分控件RatingBar
RatingBar位于android.widget包中,是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定。使用RatingBar的默认大小时,用户可以触摸/拖动或使用键来设置评分,它有两种样式(小风格用ratingBarStyleSmall,大风格用ratingBarStyleIndicator),其中大的只适合指示,不适合于用户交互
RatingBar控件的XML属性:
属性名称 | 描述 |
android:isIndicator | RatingBar是否是一个指示器(用户无法进行更改) |
android:numStars | 显示的星型数量,必须是一个整形值,如“100”。 |
android:rating | 默认的评分,必须是浮点类型,如“1.2”。 |
android:stepSize | 评分的步长,必须是浮点类型,如“1.2”。 |