2013-07-26 36 views
0

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

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

和finaly 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

是的,我想这个代码也运行在姜饼上,但运行在姜饼操作系统上的设备无法显示进度条..... –

回答

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