2015-10-05 79 views
2

嗨,我是新的Android初學者。我想從URL中的imageView插入圖像,但每當它從imageView中的URL加載時,第二次它應該插入沒有互聯網意味着它將被存儲在緩存中。從URL加載圖像到imageView以及緩存

+0

所以你有什麼迄今所做? – Shahzeb

+0

使用壁畫,它是Facebook的圖像加載庫,似乎對我很好https://github.com/facebook/fresco –

+0

如果您正在查找diskcache,請簽出此文件http://stackoverflow.com/a/32516598/1939564和這如果你正在尋找內存緩存http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html –

回答

6

對於這一點,你可以用畢加索庫 您可以從畢加索圖書館網站上下載它只是把這個jar文件到libs文件夾中。它將管理Image的所有屬性。 http://square.github.io/picasso/

String imgURL = "Your URL"; 
ivmage = (ImageView) findViewById(R.id.imageView1); 
Picasso.with(MainActivity.this).load(imgURL).into(ivmage); 
+0

thanx第三方是最好的方法 –

2

您可以使用Picasso庫。

使用Picasso,其優點是

  • 處理ImageView的回收和適配器下載取消。
  • 複雜的圖像轉換與最小的內存使用。
  • 自動內存和磁盤緩存

Url

Picasso.with(context).load(url).into(imageView); 

加載Image請參閱此鏈接API:Picasso

1

我建議這樣做畢加索庫。 here是畢加索圖書館的詳細文檔。

例如:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

,或者您可以使用凌空的ImageLoader的的。 here你可以找到Volley的圖像加載文檔。

例如:

// Retrieves an image specified by the URL, displays it in the UI. 
ImageRequest request = new ImageRequest(url, 
    new Response.Listener<Bitmap>() { 
     @Override 
     public void onResponse(Bitmap bitmap) { 
      mImageView.setImageBitmap(bitmap); 
     } 
    }, 0, 0, null, 
    new Response.ErrorListener() { 
     public void onErrorResponse(VolleyError error) { 
      mImageView.setImageResource(R.drawable.image_load_error); 
     } 
    }); 
// Access the RequestQueue through your singleton class. 
MySingleton.getInstance(this).addToRequestQueue(request); 

如果您使用的凌空抽射。那麼你必須手動緩存圖像。畢加索將默認緩存圖像。