开源项目NumberProgressBar的简单使用 柔光的暖阳◎ 2022-08-05 01:22 121阅读 0赞 NumberProgressBar是安卓中一个开源的项目,可以实现下面这种进度条效果。 ![610dc034jw1efyrd8n7i7g20cz02mq5f.gif][] 项目源码下载地址: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目录下,如图 ![Image 1][] ![Image 1][] 第四步,我们看到报错了,别急,这是因为它的资源文件没有拷过来我们进入目录\\NumberProgressBar-master\\library\\src\\main\\res\\values我们看到三个文件 第一个:attrs.xml,直接拷贝到项目的res目录的values包下,原本是没有的,所以不用担心冲突,如果已经有了的话就复制里面resources节点中间的代码过来。 第二个:strings.xml,里面只有个appname,这个项目中已经有了,所以不用管这个文件 第三个:styles.xml,这里面是一些这个NumberProgress的几种不同颜色的样式,你可以只拷贝你需要的style过来,然后打开项目中res目录下的style粘贴代码,注意别删原有的样式,直接贴到后面就得了. ![Image 1][] 第五步:打开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秒重复一次 \} \} 大功告成!运行一下。 谢谢!欢迎指正 [610dc034jw1efyrd8n7i7g20cz02mq5f.gif]: /images/20220805/7beec4cd134645a78daf2ae65fa9cb0a.png [Image 1]:
还没有评论,来说两句吧...