2012-11-16 66 views
1

我有20個不同圖像的URL。我需要從URL下載20個圖像,並在網格視圖中顯示它。對我而言,花很多時間下載圖像內容。以下是我在Image Adapter類中使用的代碼。花費很多時間從url下載並顯示圖像到Gridview

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(220, 200)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(1, 1, 1,0); 
    } else { 
     imageView = (ImageView) convertView; 
    } 
    imageView.setImageDrawable(GetDrawableImage(url)); 
    return imageView; 
} 
private Drawable GetDrawableImage(String zurlP) 
{ InputStream InputStreamL = null; 
    Drawable DrawableImageL = null; 
try { 
     InputStreamL = (InputStream) new URL(zurlP).getContent(); 
     DrawableImageL = Drawable.createFromStream(InputStreamL, "src"); 
    } catch (MalformedURLException e) {   
    } catch (IOException e) {   
    } 
    return DrawableImageL; 
} 

是否有任何最簡單的方法(更少的時間消耗)來執行相同的任務?

回答

3

是的,您可以使用Asynctask或無痛線程從服務器加載大型圖像。下載後緩存圖像。您可以使用[Fedor lazylist](https://github.com/thest1/LazyList)

各種可能性。

Multi Threading

Cacheing

Pain less threading

Large bitmaps loading

或者你可以簡單地用拇指指甲去。意味着從服務器而不是位圖獲取縮略圖。加載將生效

+0

縮略圖是一個非常好的主意,尤其是如果你正在處理KB的10或100s的源圖像,但是將它們與這裏建議的其他技術結合起來,它不是一個或兩個。 –

相關問題