2013-10-25 75 views
3

我正在嘗試使用ViewPager創建圖像庫。我找到了幾個例子,我已經把它們全部用於工作。示例沒有顯示的一件事是如何使用從URL下載的圖像填充ViewPager。所有教程或者在Drawables文件夾或SD卡上都有圖像。有誰知道一個ViewPager從URL獲取圖像的例子。我找到了Lazy Loading一個GridView和一個ListView的例子,但我不夠聰明,能夠將它們轉換爲一個可用的ViewPager。我主要遇到適配器類的問題。懶加載示例似乎使用BaseAdapter,我認爲ViewPager需要使用PagerAdapter對不對?因此,是否有任何從URL獲取圖像的ViewPager示例?我需要ViewPager做的是從一個字符串數組像這樣下載圖片:Android ViewPager:從URL下載圖像

String[] imageGalleryStr = { 
    "http://www.website.com/images/image01.png", 
    "http://www.website.com/images/image02.png", 
    "http://www.website.com/images/image03.png", 
    "http://www.website.com/images/image04.png", 
    "http://www.website.com/images/image25.png", 
    "http://www.website.com/images/image26.png", 
    "http://www.website.com/images/image27.png", 
    "http://www.website.com/images/image28.png" }; 

任何想法?

回答

4
+1

我曾嘗試通用圖像加載器,但找不到一個關於如何實現它的好教程。但是我終於找到了一個,並且我獲得了Universal Image Loader的功能! – kirktoon1882

+0

很棒!!!!!!!!! –

+1

@ kirktoon1882,我知道這很晚了,但你介意分享你提到的那個教程嗎? – Felix

1

我還沒有試過這段代碼,但希望這樣的事情應該爲你工作。 :)

@Override 
public Object instantiateItem(final ViewGroup container, final int position) { 
    tagShown = false; 

    View view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.image_view_item, container, false); 

    imageView = (ImageView) view.findViewById(R.id.imageView); 

    new DownloadImageInBackground(imageView).execute(imageGalleryStr[position]); 

    ((ViewPager) container).addView(view); 

    return view; 
} 

... 

private class DownloadImageInBackground extends AsyncTask<String, Void, Bitmap>{ 

    ImageView iv; 

    public DownloadImageInBackground(ImageView iv) { 
     this.iv = iv; 
    } 

    @Override 
    protected Bitmap doInBackground(String... params) { 
     // download bitmap from string url 
     return bitmap; 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     super.onPostExecute(result); 
     iv.setImageBitmap(result); 
    } 
} 
0

如果你已經有一個工作模板(ViewPager),也許你可以選擇庫之一來自全國各地的網絡獲取圖像/位圖,然後包裹裝載機,片斷式的內部圖像被操作由ViewPager ...

當尋呼機呼叫「onCreateView」上被尋呼的類型,你有這樣的:

imgLoadr.DisplayImage(mMap.get("pic"), imgView); 

你執行「DisplayImage」是建立在許多庫之一網絡化的圖像管理和包括以下細節:

DisplayImage implementation looks first for a properly scaled bitmap in memory... 
then it looks for a bitmap in local file system cache... 
then it fetches the file from across the network and feeds the network stream to get instances of local bitmap/caches. 

您的文章只關注上面的最後一個項目,但IMO你可能成爲所有列表中的興趣,因爲這只是用圖像爲中心的應用程序工作的一部分。這

如果您打算處理大量的照片相冊,您可能需要高效地管理每個位圖並以某種方式縮放位圖以減少對內存的需求。