我正在尝试制作一个搜索栏,一旦你发布,它的进度就会变为 0。该程序工作得很好,除了图形。我希望搜索栏显示进度每秒减少 10,直到它变为零。
我在某处读到要同时更新图形,我们应该使用 runOnUiThread 但这不起作用。
进度条显示最后一个位置和零,但不显示两者之间的位置。这是我的代码:
import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class seekbar_a extends Activity implements OnSeekBarChangeListener{
SeekBar sb;
int progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.seekbar_a);
sb = (SeekBar) findViewById(R.id.seekBar_acc);
sb.setOnSeekBarChangeListener(this);
}
@Override
public void onProgressChanged(SeekBar seekBar, int pro,
boolean fromUser) {
// TODO Auto-generated method stub
pro=progress;
runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Progress = " + sb.getProgress() + "----\n----\n----\n----\n");
sb.setProgress(sb.getProgress());
}
});
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
while (sb.getProgress() > 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Progress = " + sb.getProgress() + "====\n====\n====\n====\n");
sb.setProgress(sb.getProgress()-10);
}
}
}
我的思考过程是这样的:oncreate设置栏->调用onstarttrackingtouch方法,然后调用onprogresschange方法,直到我放开拇指->调用onstoptrackingtouch方法启动循环,该循环减少进度,每秒再次调用onprogresschange方法,直到0。
那为什么我的图形没有改变。