Android API 25 (Android 7.1.1)
ProgressBar
public class ProgressBar
extends View
Added in API level 1
java.lang.Object
↳android.view.View
↳android.widget.ProgressBar
已知直接子类:
AbsSeekBar
ContentLoadingProgressBar
ProgressBar是界面用于与用户交互的一个组件,用来提升用户友好度,通常用于向用户展示某个耗时操作时,用于展示完成的百分比,不至于让用户觉得程序失去了响应。
在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。
以下代码示例展示了如何使用一个进度条,在一个工作线程中更新,然后把进度通知给用户:
public class MyActivity extends Activity {
private static final int PROGRESS = 0x1;
private ProgressBar mProgress;
private int mProgressStatus = 0;
private Handler mHandler = new Handler();
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.progressbar_activity);
mProgress = (ProgressBar) findViewById(R.id.progress_bar);
// Start lengthy operation in a background thread
new Thread(new Runnable() {
public void run() {
while (mProgressStatus < 100) {
mProgressStatus = doWork();
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
mProgress.setProgress(mProgressStatus);
}
});
}
}
}).start();
}
}
添加进度条的布局文件,你可以使用
<ProgressBar style="@android:style/Widget.ProgressBar.Horizontal" .../>
style=”?android:attr/ProgressBarStyleHorizontal”
如果你将使用进度条显示真正的进度,你应该使用水平进度条。然后使用incrementProgressBy()或setProgress()来增加进度值。默认情况下,当进度值达到100就满了。如果有必要,你可以使用android:max来调整最大值。
另一个常用的风格是Widget.ProgressBar.Small。当等待加载内容时显示了一个小的旋转轮子。
系统提供的进度条风格有:
·Widget.ProgressBar.Horizontal 水平进度条
·Widget.ProgressBar.Small 小环形进度条
·Widget.ProgressBar.Large 大环形进度条
·Widget.ProgressBar.Inverse 环形逆转进度条
·Widget.ProgressBar.Small.Inverse 小环形逆转进度条
·Widget.ProgressBar.Large.Inverse 大环形逆转进度条
·Widget.ProgressBar.Small.Title 标题型小环形进度条
API 11-16
属性说明:设置进度条动画的超时时间。帧之间的动画超时时间。单位:毫秒。
必须是整型值(integer),如:100。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是animationResolution。
API 16被弃用。Framework不再使用。
API 1
属性说明:设置是否使用不确定进度模式。在不确定进度模式下,进度条动画无限循环。(即没有确切的进度值。)
必须是布尔值(boolean),“true”或“false”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是indeterminate。
API 1
属性说明:设置当选择不确定进度时,如何描述到达最大进度值的表现。
必须是以下常量之一:
repeat 进度从0重新开始
cycle 进度保持当前值,并且回到0
对应的全局资源符号是indeterminateBehavior。
API 1
属性说明:设置当选择不确定进度时,所绘制的drawable。
必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是indeterminateDrawable。
API 1
属性说明:设置当选择不确定进度时的持续时间。
必须是整型值(integer),如:100。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是indeterminateDuration。
API 1
属性说明:设置是否只采用不确定进度模式(状态保持模式将不会工作)。
必须是布尔值(boolean),“true”或“false”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是indeterminateOnly。
API 21
关联方法:setIndeterminateTintList(ColorStateList tint)
属性说明:设置不确定进度条的色调。
必须是颜色值(color),格式”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局资源符号是indeterminateTint。
API 21
关联方法:setIndeterminateTintMode(PorterDuff.Mode tintMode)
属性说明:设置不确定进度条色调的混合模式。
必须是以下常量之一:
src_over src_in src_atop multiply screen add
它对应的全局资源符号是indeterminateTintMode。
API 1
关联方法:setInterpolator(Interpolator interpolator)
属性说明:指定一个插值器。用于定义变化的速率。默认linear_interpolator。
【使用插值器】
android:interpolator=”@android:anim/accelerate_interpolator”
【常用插值器】
accelerate_decelerate_interpolator 先加速再减速
accelerate_interpolator 加速
decelerate_interpolator 减速
linear_interpolator 匀速
cycle_interpolator 周期运动(正弦曲线)
bounce_interpolator 最后阶段弹球效果
anticipate_interpolator 先回退一小步然后加速前进
anticipate_overshoot_interpolator 在上一个基础上超过终点一小步再回到终点
overshoot_interpolator 快速到达终点并超出一小步最后回到终点
【个性化插值器】(几种常用插值器可调整的属性)
accelerate_decelerate_interpolator
无
accelerate_interpolator
android:factor浮点值,加速速率,默认为1;
decelerate_interpolator
android:factor浮点值,减速速率,默认为1;
linear_interpolator
无
cycle_interpolator
android:cycles整数值,循环次数,默认为1;
bounce_interpolator
无
anticipate_interpolator
android:tension浮点值,起始点后退的张力,默认为2
anticipate_overshoot_interpolator
android:tension浮点值,起始点后退的张力,默认为2
android:extraTension浮点值,拉力的倍数,默认为1.5(2*1.5)
overshoot_interpolator
android:tension浮点值,超出终点后的拉力,默认为2
【例】在/res/anim下创建此XML文件,命名my_overshoot_interpolator.xml,然后引用
android:tension="7.0"/>
【自定义插值器】
...
API 1
关联方法:setMax(int max)
属性说明:设置进度值的最大值。
必须是整型值(integer),如:100。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是max。
API 1
属性说明:设置进度条的最大高度的可选参数。
必须是带单位的浮点型尺寸值(float),如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关像素)、sp(通常用于字体尺寸的可伸缩像素)、in(英寸)、mm(毫米)。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是maxHeight。
API 1
属性说明:设置进度条的最大宽度的可选参数。
必须是带单位的浮点型尺寸值(float),如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关像素)、sp(通常用于字体尺寸的可伸缩像素)、in(英寸)、mm(毫米)。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是maxWidth。
API 1
属性说明:设置进度条的最小高度的可选参数。
关联方法:setMinimumHeight(int minHeight)
必须是带单位的浮点型尺寸值(float),如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关像素)、sp(通常用于字体尺寸的可伸缩像素)、in(英寸)、mm(毫米)。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是minHeight。
API 1
属性说明:设置进度条的最小宽度的可选参数。
关联方法:setMinimumWidth(int minWidth)
必须是带单位的浮点型尺寸值(float),如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关像素)、sp(通常用于字体尺寸的可伸缩像素)、in(英寸)、mm(毫米)。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是minWidth。
API 18
属性说明:设置当RTL模式时,相关绘图是否需要镜像。默认为false。
必须是布尔值(boolean),“true”或“false”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是mirrorForRtl。
API 1
setProgress(int progress)
属性说明:设置进度值的默认值,值介于0到max之间。如果进度条处于不确定模式,则不执行任何操作。
必须是整型值(integer),如:100。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是progress。
API 21
关联方法:setProgressBackgroundTintList(ColorStateList tint)
属性说明:设置进度条背景的色调。
必须是颜色值(color),格式”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是progressBackgroundTint。
API 21
关联方法:setProgressBackgroundTintMode(PorterDuff.Mode)
属性说明:设置进度条背景色调的渲染模式。
必须是以下常量之一:
src_over src_in src_atop multiply screen add
对应的全局属性资源符号是progressBackgroundTintMode。
API 1
关联方法:setProgressDrawable(android.graphics.drawable.Drawable)
属性说明:设置该进度条轨道对应的drawable。
必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是progressDrawable。
API 21
关联方法:setProgressTintList(ColorStateList tint)
属性说明:设置进度条的色调。
必须是颜色值(color),格式”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是progressTint。
API 21
关联方法:setProgressTintMode(PorterDuff.Mode tintMode)
属性说明:设置进度条色调的渲染模式。
必须是以下常量之一:
src_over src_in src_atop multiply screen add
对应的全局属性资源符号是progressTintMode。
API 1
关联方法:setSecondearyProgress(int secondaryProgress)
属性说明:设置次级进度值的默认值,值介于0到max之间。这种进步是在主要进展和背景之间绘制的。 它可以是媒体场景的理想选择,例如显示缓冲进度,而默认进度显示播放进度。
必须是整型值(integer),如:100。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是secondaryProgress。
API 21
关联方法:setSecondaryProgressTintList(ColorStateList tint)
属性说明:设置二级进度条的色调。
必须是颜色值(color),格式”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是secondaryProgressTint。
API 21
关联方法:setSecondaryProgressTintMode(PorterDuff.Mode tintMode)
属性说明:设置二级进度条色调的渲染模式。
必须是以下常量之一:
src_over src_in src_atop multiply screen add
对应的全局属性资源符号是secondaryProgressTintMode。
跳转view.View
ProgressBar(Context context)
ProgressBar(Context context, AttributeSet attrs)
ProgressBar(Context context, AttributeSet attrs, int defStyleAttr)
ProgressBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)