更改进度条级别

时间:2013-10-03 10:25:37

标签: android

我有一个简单的活动,假设显示具有不同填充水平的进度条。在学生对我的移动应用程序进行练习测试后,将显示带有进度条的此活动。所以progess栏会显示学生是否通过显示所有蓝色的颜色填充它。如果是平均表现。颜色是绿色的一半填充。如果性能不佳,颜色会完全变红,并带有轻微的颜色填充。

我设置填充颜色的小代码如下,但它不起作用

 if(grade.equals("passed")){
        setProgress(100);
    }
    else{
        setProgress(50);
    }

2 个答案:

答案 0 :(得分:0)

下一个为我工作的示例:

private void animate() {
    mProgressStatus = 25;
    final ProgressBar mProgress = (ProgressBar) findViewById(R.id.progress);
    new Thread(new Runnable() {
        public void run() {
            while (mProgressStatus < 100) {
                mHandler.post(new Runnable() {
                    public void run() {
                        mProgress.setProgress(mProgressStatus);
                    }
                });
            }
        }
    }).start();
}

当我更改mProgressStatus进度条更改填充

答案 1 :(得分:0)

这就是我的正常做法。

我放弃了Handler并添加了自定义方法,让我可以轻松控制刷新状态。

您还可以轻松地控制刷新周期,并且可以控制。

    public class ProgressHandler extends Handler {

    private static final int START = 0;
    private static final int STOP = 1;
    private static final int REFRESH = 2;

    public void start() {
        removeMessages( STOP );
        sendEmptyMessage( START );
    }

    public void stop() {
        removeMessages( START );
        removeMessages( STOP );
    }

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage( msg );

        switch (msg.what) {
        case REFRESH:
            mProgress.setProgress(mProgressStatus);

            if( mProgressStatus < 100 )
                sendEmptyMessageDelayed( REFRESH, 100 /* Or how much you need */ );

            break;
        case START:
            sendEmptyMessage( REFRESH );
            break;
        case STOP:
            removeMessages( REFRESH );
            break;
        default:
            break;
        }
    }
};

我认为这是最好的方式之一,甚至比使用Timer更好,因为它可以让你自定义行为。