0

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

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

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

2 回答 2

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 进度条改变填充

于 2013-10-03T10:38:22.607 回答
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更好,因为它可以让您更多地自定义行为。

于 2013-10-03T10:57:55.440 回答