NumberProgressBar是安卓中一个开源的项目,可以实现下面这种进度条效果。
项目源码下载地址:https://github.com/daimajia/NumberProgressBar 下载并解压,打开NumberProgressBar-master\library\src\main\java\com\daimajia\numberprogressbar.java,我们可以看到它与ProgressBar没有任何关系,直接继承自View 根据它的效果图,我们知道,它分为三部分,已经完成的(颜色条)、文字(百分比)、未完成的(剩下的白色条)。 好了,不多说了,开始我们的Demo吧 第一步,新建项目 第二步,右键项目新建一个Source Folder,名字随便,我喜欢使用缩写,就叫做np吧,嘿嘿。 第三步,把源码拷过来,源码在NumberProgressBar-master\library\src\main\java目录下,如图第四步,我们看到报错了,别急,这是因为它的资源文件没有拷过来我们进入目录\NumberProgressBar-master\library\src\main\res\values我们看到三个文件 第一个:attrs.xml,直接拷贝到项目的res目录的values包下,原本是没有的,所以不用担心冲突,如果已经有了的话就复制里面resources节点中间的代码过来。 第二个:strings.xml,里面只有个appname,这个项目中已经有了,所以不用管这个文件 第三个:styles.xml,这里面是一些这个NumberProgress的几种不同颜色的样式,你可以只拷贝你需要的style过来,然后打开项目中res目录下的style粘贴代码,注意别删原有的样式,直接贴到后面就得了.
第五步:打开NumberProgressBar,也就是报错的那个源码文件,按crtl+shift+O导包,选择你的项目的包名的那个R,保存。 第六步:进入MainActivity的布局文件,即activity_main,在适当位置编辑如下代码,我是用它来把helloworld替换掉 <com.daimajia.numberprogressbar.NumberProgressBar
android:id="@+id/number_progress_bar"
style="@style/NumberProgressBar_Default"
/>
第七步:编辑代码,我这里写在了oncrete中,代码中注释得很详细了,我就不多说了 package com.zxy.npd;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import com.daimajia.numberprogressbar.NumberProgressBar;
public class MainActivity extends Activity {
private int rate;// 表示进度条的进度
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final NumberProgressBar bnp = (NumberProgressBar) findViewById(R.id.number_progress_bar);//找到自定义的这个“控件”
rate = 0;//初始化进度位置
Timer timer = new Timer();// 获取timer对象
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {//在UI线程中运行
@Override
public void run() {
// bnp.incrementProgressBy(1);//设置每次的增量,也可以像下面这样用个表达式来实现
rate++;//
if (rate == 110) {
bnp.setProgress(0);//进度走完后再从0开始
rate = 0;
} else {
bnp.setProgress(rate);// 设置进度
}
}
});
}
}, 1000, 100);// 程序开始1秒后执行TimerTask任务,每隔0.1秒重复一次
}
}
大功告成!运行一下。 谢谢!欢迎指正