2012-06-18 40 views
11

我正在自定義ImageView。其中一種方法是從URL加載圖像。我想檢索線程中的位圖並在UI線程中加載位圖。runOnUiThread視圖內

我怎樣才能讓runOnUIThread()調用繪製位圖?

是否有某種內置函數?或者我應該在構造函數中創建一個Handler並將其用於在UI線程中運行runnables?

+2

跟隨Handler。 runOnUIThread是一個Activity的方法,如果我沒有錯誤 – Rich

回答

37

通過AsyncTask下載圖片,並在其onPostExecute方法設置你的看法

OR

從單獨的圖像下載線程使用的View方法將總是在運行其RunnableUI線程

yourImageView.post(new Runnable() { 
    @Override 
    public void run() { 
     // set the downloaded image here 

    } 
}); 
+0

更多信息在這裏:http://stackoverflow.com/q/10558208 – cyrilchampier

2

創建一個從AsyncTask擴展的類。在構造函數中傳遞ImageView。在doInBackground方法中,下載圖像。在postExecute方法中,將圖像設置爲ImageView。

4

你可以做這樣的事情:

new Thread(new Runnable() { 
    public void run() { 
    final Bitmap bm = getBitmapFromURL(myStation.getStation().imageURL); 
    ((Activity) context).runOnUiThread(new Runnable() { 
     public void run() { 
     icon.setImageBitmap(bm); 
     } 
    }); 
    } 
}).start(); 

這將工作以外的活動,如在ListAdapter。