数字进度条NumberProgressBar

当原生的进度条无法满足美观或个性化需求时,可以使用自定义的NumberProgressBar。这种数字进度条常见于升级、上传下载过程,易于实现且高度可定制。通过设置Java代码、布局文件、样式属性、进度监听以及自定义组件,可以打造理想的进度条效果。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值