2013-07-26 39 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); 
     } 
    } 
};