进度条ProgressBar的功能和用法
- ProgressBar概述
进度条是UI界面中的一种非常实用的组件,通常向用户显示某个耗时操作完成的百分比。因此进度条可以动态地显示进度,避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应,从而更好地提高用户界面的友好性 - Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格,该属性支持如下几个属性值。
1.style=“?android:attr/progressBarStyle” 圆形进度条
2.style=“?android:attr/progressBarStyleHorizontal” 水平进度条
3.style=“?android:attr/progressBarStyleInverse” 圆形普通大小进度条
4.style=“?android:attr/progressBarStyleLarge” 圆形大进度条
5.style=“?android:attr/progressBarStyleLargeInverse” 圆形大进度条
6.style=“?android:attr/progressBarStyleSmall” 小圆形进度条
7.style=“?android:attr/progressBarStyleSmallInverse” 普通大圆形小进度条
8.style=“?android:attr/progressBarStyleSmallTitle” 带标题的圆形小进度条 - ProgressBar支持如下表的.xml属性
1.android:max:设置该进度条的最大值
2.android:progress设置该进度条的已完成进度值
3. android:indeterminate该属性设置为true, 设置进度条不精确显示进度
4.android:indeterminateDrawable设置绘制不显示进度的Drawable对象 - ProgressBar的重要方法
1.getMax():返回这个进度条的范围的上限
2.getProgress():返回进度值 setProgress():
getSecondaryProgress():返回次要进度值 setSecondaryProgress():
incrementProgressBy(int diff):指定增加的进度,正数为增加进度,负数为减去进度
isIndeterminate():判断进度条是否在不精确显示进度模式下
setIndeterminate(boolean indeterminate):设置进度条不精确显示模式
setVisibility(int v):设置该进度条是否可视
ProgressBar代码
//在开发时,当需要下载或上传文件时,需要让用户知道当前的进度,就需要使用进度条
//xml中使用
<ProgressBar android:id="@+id/pb_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="20"
android:secondaryProgress="50"
style="@android:style/Widget.ProgressBar.Horizontal"
android:max="100"/>
//减少或增加进度,值为整数就是增加,负数就是减少
pb_show.incrementProgressBy(-5);//第一进度
pb_show.incrementSecondaryProgressBy(-3);//第二进度
拖动条SeekBar的功能和用法
拖动条概述
- 拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如调节音量等。
-
SeekBar的主要应用在音乐播放,视频播放,或者对音量调节,屏幕亮度调节的一些操作中,让用户可以手动的去改变相应的值。
SeekBar代码
//在开发过程中,音量及音视频播放的时候,
//需要快速定位到某个地方,这时候可以使用拖动条来实现
//xml中定义拖动条来使用
<SeekBar
android:id="@+id/sb_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255" //最大进度,是音视频的最大时长
android:progress="50" //当前定位到的播放位置/>
//拖动SeekBar,进行监听,调整当前位置
//为seekBar设置监听事件
sb_id.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
//停止拖动
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.e("--Main--", "--------停止拖动-------");
}
//开始拖动
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.e("--Main--", "--------开始拖动-------");
}
//拖动中
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
Log.e("--Main--", "--------拖动中:progress="+progress);
iv_head.setAlpha(progress);//修改图片的透明度
tv_show.setText(String.valueOf(progress));//修改文本显示的内容
}
});
星级评分条RatingBar 的功能和用法
- RatingBar概述
星级评分条与拖动条十分相似,它们甚至有相同的父类:AbsSeekBar。实际上星级评分条与拖动条的用法、功能都十分接近:它们都允许用户通过拖动来改变进度。RatingBar与SeekBar最大区别在于: RatingBar通过星星来表示进度。 - 常见 xml属性:
android:isIndicator:设置该星级评分条是否允许用户改变(true为不允许)
android:numStarts:设置该星级评分条总共有多少个星级
android:rating:设置该星级评分条默认的星级
android:stepSize:设置每次最少需要改变多少个星级
--RatingBar 实现方法
<RatingBar
android:id="@+id/room_ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content"
android:numStars="5“
android:rating="4"
android:layout_marginLeft="10dp" >
</RatingBar>
- 设置监听
bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar arg0, float arg1, boolean arg2) {
Toast.makeText(MainActivity.this,"" + arg1*20, Toast.LENGTH_SHORT).show();
}
});