2011-10-13 97 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线程中设置Drawable。像这样

 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为我的所有图像加载,它会使这样的行为超级简单。