Android 更改进度条级别

Android 更改进度条级别,android,Android,我有一个简单的活动,假设显示一个具有不同填充级别的进度条。学生在我的移动应用程序上进行实践测试后,将显示此带有进度条的活动。因此,进度条将显示学生是否通过,显示所有蓝色,并填充颜色。如果它是一个平均性能。颜色是绿色的一半。如果性能不佳,则颜色完全为红色,带有轻微的颜色填充 下面是我设置填充颜色的小代码,但它不起作用 if(grade.equals("passed")){ setProgress(100); } else{ setProgress(

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

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

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

下一个为我工作的示例:

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();
}
private void animate(){
mProgressStatus=25;
最终进度条mProgress=(进度条)findViewById(R.id.progress);
新线程(newrunnable()){
公开募捐{
而(mProgressStatus<100){
mHandler.post(新Runnable(){
公开募捐{
mProgress.setProgress(mProgressStatus);
}
});
}
}
}).start();
}

当我更改mProgressStatus时,进度条会更改填充

这就是我通常的操作方式

我扩展了处理程序并添加了自定义方法,使我能够轻松控制刷新状态

您还可以轻松地控制刷新周期

    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;
        }
    }
};
公共类ProgressHandler扩展处理程序{
私有静态最终整数开始=0;
专用静态最终int停止=1;
私有静态最终整型刷新=2;
公开作废开始(){
删除消息(停止);
sendEmptyMessage(开始);
}
公共停车场(){
移除消息(开始);
删除消息(停止);
}
@凌驾
公共无效handleMessage(消息消息消息){
超级handleMessage(msg);
开关(msg.what){
案例刷新:
mProgress.setProgress(mProgressStatus);
如果(mProgressStatus<100)
sendEmptyMessageDelayed(刷新,100/*或需要多少*/);
打破
案件开始:
sendEmptyMessage(刷新);
打破
案件停止:
删除消息(刷新);
打破
违约:
打破
}
}
};

我认为这是最好的方法之一,甚至比使用原因更好,因为它可以让您更多地自定义行为。

您可以通过提供progessbar的xml和更多代码来详细说明。。。这就是你要找的吗?这很糟糕。像这样,大量的Runnable将被Spowned抱歉,我不认为你理解这个问题,我不需要一个动态变化的进度条。我需要一个进度条,当用户在我的应用程序上完成练习测试时,它会显示一个级别。所以有不同的层次。通过的关卡。失败级别和平均性能级别都有不同的颜色