Android
原生的ProgressBar
在不同的主题下显示的风格迥异,基本上可以满足我们的正常使用,但是有时候我们的APP
可能会要求比较美观或者个性化,此时就需要自定义我们理想中的ProgressBar
样式来满足需求。
NumberProgressBar
是一个自定义的数字进度条,在升级或者上传下载等过程中会经常用到,是最常用的进度条使用方式之一。
以下是NumberProgressBar
的使用方式:
1、MainActivity.java
package com.wiggins.numberprogressbar;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import com.wiggins.numberprogressbar.listener.OnProgressBarListener;
import com.wiggins.numberprogressbar.widget.NumberProgressBar;
import java.util.Timer;
import java.util.TimerTask;
/**
* @Description 自定义数字进度条:ProgressBar
* @Author 一花一世界
* @Time 2017/1/12 14:57
*/
public class MainActivity extends Activity implements OnProgressBarListener {
private MainActivity mActivity = null;
private Timer timer;
private NumberProgressBar npb; //进度条组件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActivity = this;
initView();
setListener();
setProgress();
}
private void initView() {
npb = (NumberProgressBar) findViewById(R.id.numberProgressBar);
}
private void setListener() {
npb.setOnProgressBarListener(this);
}
/**
* @Description 创建一个定时任务,模拟进度更新
*/
private void setProgress() {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//递增progress数值
npb.incrementProgressBy(1);
}
});
}
}, 1000, 100);
}
/**
* @Description 实现对进度实时监听,max默认为100
*/
@Override
public void onProgressChange(int current, int max) {
if (current == max) {
showToast(getResources().getString(R.string.finish));
npb.setProgress(0);
}
}
/**
* @Description 吐司
*/
private void showToast(String str) {
Toast.makeText(mActivity, str, Toast.LENGTH_SHORT).show();
}
/**
* @Description 取消定时任务
*/
@Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();
}
}
2、xml
布局文件,需要注意的是记得加命名空间xmlns:custom="http://schemas.android.com/apk/res-auto"
<com.wiggins.numberprogressbar.widget.NumberProgressBar
android:id="@+id/numberProgressBar"
style="@style/NumberProgressBar_Default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_normal"
custom:progress_current="0" />
3、style
样式属性
<style name="NumberProgressBar_Default">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="progress_max">100</item>
<item name="progress_current">0</item>
<item name="progress_unreached_color">#CCCCCC</item>
<item name="progress_reached_color">#3498DB</item>
<item name="progress_text_size">10sp</item>
&l