它是一个进度条控件或者是加载控件,有两种形式,一种是转圈圈的加载控件,还有一种是进度条,显示当前进度的多少。如果是做应用,那么这个控件是少不了的,应为在请求网络数据的时候,就需要使用到它,在加载数据前,显示加载框,在数据获取到或者失败后,取消或者是隐藏该控件。
设置它很简单,如下格式
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="80dp"
android:layout_height="80dp" />
这就显示了加载框,但在我手机上显示的加载条是红色的,我并不想要这个颜色,那么如何修改这个颜色呢?
android:indeterminateTint="#CCCCCC" ,该属性设置圆圈的颜色
android:indeterminateTintMode="src_atop" ,该属性设置进度条的旋转模式,src_atop就是正常模式,其他模式,大家可以试试。
颜色修改完了,那么加载信息就显示出来了,在程序中就可以直接的布局中屏幕中间,在不用的时候隐藏起来,需要的时候显示出来,但是这样做的效果不太好,因为需要每个布局文件中都需要设置该控件。可以在Dialog中添加该控件,在需要的时候,显示弹框,不需要的时候,取消弹框,这样做效果更好。
有时候,我们需要进度条的形式,那么如果变为进度条呢?
需要去改变形式,下面这几个属性是设置进度条的。
style="?android:attr/progressBarStyleHorizontal" | 设置风格为长形 |
android:max="100" | 最大进度值为100 |
android:progress="50" | 初始化的进度值 |
android:secondaryProgress="70" | 初始化的底层第二个进度值 |
android:layout_gravity="center_vertical | 垂直居中 |
属性都有解释,设置进去后,显示出来的就是进度条了,那么进度条是静态的,如何让它动起来呢,下面这个例子就让其动起来。
通过在代码中设置setProgress(num);让进度条不停的变化
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mProgressBar.setProgress(0);
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
mProgressBar.setProgress(mProgressBar.getProgress() + 5);
if (mProgressBar.getProgress() >= 100){
if (timer != null){
timer.cancel();
}
}
}
};
timer = new Timer();
timer.schedule(timerTask,1000,500);
这里通过定时器,来让进度条不停的增长,当进度条d大于等于100时,停止定时器。
有时候,我们需要将加载框颜色渐变,让其显得更好看,那用如何实现呢?
在drawable文件夹下创建progressbar.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<gradient
android:centerColor="#FFFFFF"
android:centerY="0.50"
android:endColor="#cccccc"
android:startColor="#000000"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
然后设置该属性
android
:
indeterminateDrawable,该属性设置一个drawable.
xml文件配置内容其中有一个旋转动画,该动画是从0度到360旋转,然后是样式,样式是圆环,颜色的渐变,从#000000到#cccccc的颜色的改变。
总结:
该控件使用起来简单,涉及到的属性有
<pre name="code" class="html"><pre name="code" class="html">android:indeterminateTint
android:indeterminateTintMode
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progress="50"
android:secondaryProgress="70"
android:indeterminateDrawable