2012-09-16 2 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에서 작동하고 배경 스레드를 중단하고 Handler를 호출합니다. 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

Handler는 백그라운드에서 래퍼입니다. 오랜 시간 작업을 할 수있는 스레드와 오랜 시간 동안의 작업 과정에서 사용자와 상호 작용해야하는 UI가 있습니다. 따라서 Hander는 UI 스레드에서 작동하고 중지하면 UI가 중단됩니다. 백그라운드 작업을 수행하는 3 가지 방법 : 처리기, AsyncTask <> 및 서비스가 존재합니다. 더 많은 정보 검색 : http://developer.android.com/guide/components/processes-and-threads.html –

+0

다시 한번 감사드립니다. –

관련 문제