第39页
try {
Thread.sleep(200); //线程休眠200毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
return mProgressStatus; //返回新的进度
}
}).start(); //开启一个线程
运行本实例,将显示如图4.2所示的运行结果。
图4.2 在屏幕中显示水平进度条和圆形进度条
4.1.3 拖动条和星级评分条
在Andriod中,提供了两种允许用户通过拖动来改变进度的组件,分别是拖动条(Seek Bar)和星级评分条(RatmgBar),下面分别进行介绍。
1. 拖动条
拖动条与进度条类似,所不同的是,拖动条允许用户拖动滑块来改变值,通常用于实现对某种数值的调节。例如,调节图片的透明度或是音量等。
在Android中,如果想在屏幕中添加拖动条,可以在XML布局文件中通过标记添加,基本语法格式如下:
android:layout_height="wrap_content"
android:id="@+id/seekBar1"
android:layout_width="match_parent">
SeekBar组件允许用户改变拖动滑块的外观,这可以使用android:thumb属性实现,该属性的属性值为一个Drawable对象,该Drawable对象将作为自定义滑块。
由于拖动条可以被用户控制,所以需要为其添加OnSeekBarChangeListener监听器,基本代码如下:
seekbar. setOnSeekBarChangeListener (new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch (SeekBar seekBar) {
//要执行的代码
}
@Override
public void onStartTrackingTouch (SeekBar seekBar) {
//要执行的代码
}
@Override
public void onProgressChanged (SeekBar seekBar, int progress ,
boolean fromUser) {
//其他要执行的代码
}
});
说明: 在上面的代码中,onProgressChanged()方法中的参数progress表示当前进度,也就是拖动条的值。
下面通过一个具体的实例说明拖动条的应用。
例4.3 在Eclipse中创建Android项目,名称为4.3,实现在屏幕上显示拖动条,并为其添加OnSeekBarChangeListener监听器。(实例位置:光盘\TM\sl\4\4.3)
(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件的android:text属性值修改为“当前值:50”,然后添加一个拖动条,并指定拖动条的当前值和最大值,修改后的代码如下:
android:text="当前值:50"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:id="@+id/seekBar1"
android:max="100"
android:progress="50"
android:padding="10px"
android:layout_width="match_parent"/>
(2)在主活动MainActivity中,定义一个SeekBar类的对象,用于表示拖动条,具体代码如下:
private SeekBar seekbar; //拖动条
(3)在主活动的onCreate()方法中,首先获取布局文件中添加的文本视图和拖动条,然后为拖动条添加OnSeekBarChangeListener事件监听器,并且在重写的onStopTrackingTouch()和onStartTracking Touch()方法中应用消息提示框显示对应状态,在onProgressChanged()方法中修改文本视图的值为当前进度条的进度值,具体代码如下:
final TextView result=(TextView)findViewById(R.id.textView1); //获取文本视图
seekbar = (SeekBar) findViewById(R.id.seekBar1); //获取拖动条
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "结束滑动", Toast.LENGTH_SHORT).show();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "开始滑动", Toast.LENGTH_SHORT).show();
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
result.setText("当前值:"+progress); //修改文本视图的值
}
});
运行本实例,在屏幕中将显示默认进度为60的拖动条,如图4.3所示,用鼠标拖动圆形滑块,在上方的文本视图中将显示改变后的当前进度,并且通过消息提示框显示“开始滑动”和“结束滑动”。
图4.3 在屏幕中显示拖动条
2. 星级评分条
星级评分条与拖动条类似,都允许用户拖动来改变进度,所不同的是,星级评分条通过星星图案表示进度。通常情况下,使用星级评分条表示对某一事物的支持度或对某种服务的满意程度等。例如,淘宝网中对卖家的好评度,就是通过星级评分条实现的。
在Android中,如果想在屏幕中添加星级评分条,可以在XML布局文件中通过标记添加,基本语法格式如下: