我有一个简单的活动,假设显示具有不同填充水平的进度条。在学生对我的移动应用程序进行练习测试后,将显示带有进度条的此活动。所以progess栏会显示学生是否通过显示所有蓝色的颜色填充它。如果是平均表现。颜色是绿色的一半填充。如果性能不佳,颜色会完全变红,并带有轻微的颜色填充。
我设置填充颜色的小代码如下,但它不起作用
if(grade.equals("passed")){
setProgress(100);
}
else{
setProgress(50);
}
答案 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更好,因为它可以让你自定义行为。