2011-10-13 3 views
0

저는 Android 애플리케이션을 개발하는 초보자입니다. 스레드를 사용하여 an URL에서 ImageView으로 이미지를로드하려고합니다. 아이디어는 전체 프로세스를 중단하지 않고 이미지를로드하려고합니다.ImageView는 다운로드 후 이미지를 변경하지 않습니다.

ImageView은 다운로드를 완료 한 후에 이미지를로드하지 않는 문제가 있습니다. ImageView 이미지를로드하려면 홈 버튼을 클릭해야합니다.

내 코드에 실수가 있습니까?

public class imageActivity extends Activity { 
    private ImageView imgView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     imgView =(ImageView)findViewById(R.id.img); 

     new Thread() { 
      @Override 
      public void run() { 
       try { 
        Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
        imgView.setImageDrawable(drawable); 
       } catch (Exception e) { 
        Log.e("TAG","" + e); 
       } 
      } 
     }.start(); 
    } 

    private Drawable LoadImageFromWebOperations(String url) { 
     try { 
      InputStream is = (InputStream) new URL(url).getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      return d; 
     } catch (Exception e) { 
      System.out.println("Exc=" + e); 
      return null; 
     } 
    } 
} 
+0

더 나은 응답을 위해이 질문에 언어 태그를 추가하는 것이 좋습니다. –

답변

0

UI 스레드에서 드로어 블을 설정해야하기 때문에. 이

 new Thread() { 
     @Override 
     public void run() { 
      try { 
       final Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
       imgView.post(new Runnable(){ 
        imgView.setImageDrawable(drawable); 
       }); 
      } catch (Exception e) { 
       Log.e("TAG","" + e); 
      } 
     } 
    }.start(); 
0

처럼 내 이미지로드의 모든 Prime를 사용,이 같은 행동을 아주 쉽게 만들 것입니다.

관련 문제