进度条更新按下按钮时

时间:2013-07-26 09:17:08

标签: android progress-bar android-progressbar

经过很长一段时间终于我知道如何在按下按钮时更新进度条。 这段代码不适用于姜饼。 和所有其他操作系统,它工作正常。 如有任何问题,您可以要求享受!!!!

         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;
    }

1 个答案:

答案 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);
        }
    }
};