2012-09-16 95 views
2

我有麻煩。我需要添加並顯示一對夫婦圖像(數量將在之前計算)以延遲佈局,但它們在同一時刻出現。如何延遲添加布局圖像?

這裏是我的代碼:

處理程序:

h = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 
      Log.d(LOG_TAG, "handle message!"); 
      int delay = msg.arg2; 
      try { 
       Thread.currentThread().sleep(delay); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Position position = (Position)msg.obj; 
      int img = msg.arg1; 
      int topMargin = getMarginInPixels(position.getY()); 
      int leftMargin = getMarginInPixels(position.getX()); 
      ImageView iv = new ImageView(MainActivity.this); 
      iv.setImageResource(img); 
      RelativeLayout.LayoutParams lp = new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
      lp.topMargin = topMargin; 
      lp.leftMargin = leftMargin; 
      iv.setLayoutParams(lp); 
      rl.addView(iv); 
     } 
    }; 

而且在循環:

Message m = h.obtainMessage(0, img, delay, newPosition); 
      h.sendMessage(m); 

感謝您的幫助!

回答

0

處理程序與UI的工作,請嘗試停止在你的後臺線程,並從它調用處理程序。 like

new Thread(new Runnable(){ 
for (int i=0;i<10;i++){ 
    SystemClock.sleep(1000);// 
    Message m = h.obtainMessage(0, img,newPosition); 
      h.sendMessage(m); 
} 
} 
).start(); 
+0

謝謝!你能解釋爲什麼我的代碼不起作用嗎?再次感謝你! –

+0

處理程序它是後臺線程之間的包裝可以做很長時間的操作和用戶界面必須與用戶長時間的操作過程進行交互。所以Hander在UI線程中工作,如果你停下來 - 它停止UI。存在三種執行後臺操作的方法:Handler,AsyncTask <>和Services。更多信息在這裏搜索:http://developer.android.com/guide/components/processes-and-threads.html –

+0

再次感謝您。 –