经过很长一段时间终于我知道如何在按下按钮时更新进度条。 这段代码不适用于姜饼。 和所有其他操作系统,它工作正常。 如有任何问题,您可以要求享受!!!!
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction()==MotionEvent.ACTION_DOWN){
arg0.post(rotationRunnable);
}
return false;
}
});
RotationRunnable方法: -
private Runnable rotationRunnable = new Runnable() {
@Override
public void run() {
if (button.isPressed()) {
try{
if(mProgressStatus<100){
Thread.sleep(500);
mProgressStatus = doWork();
pB.setProgress(mProgressStatus);
}
}catch(Exception e) {
e.printStackTrace();
}
button.postDelayed(rotationRunnable, 40);
}
}
};
最终的DoWork方法: -
private int doWork() {
// TODO Auto-generated method stub
Timer t=new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
mProgressStatus=mProgressStatus+1;
}
}, 1000);
time=mProgressStatus;
return mProgressStatus;
}
答案 0 :(得分:0)
问题可能是您正在使用的Thread.sleep(500)
。它可能会阻塞主线程。
总体而言,您的代码对我来说有点混乱。你使用3种不同的东西计算你的进度(thread.sleep为500,延迟发布40ms,还有timertask)?你不能这样做吗
private Runnable rotationRunnable = new Runnable() {
@Override
public void run() {
if (button.isPressed()) {
mProgressStatus++;
pB.setProgress(mProgressStatus);
button.postDelayed(rotationRunnable, 1000);
}
}
};