2016-11-17 107 views
2

我有一個列表視圖,其中我加載了帶有人名的圖像。列表視圖中有大約538個項目。我從網址獲取人物的圖像。目前,我做了以下內容: -用Picasso加載的大圖像

Picasso.with(getContext()).load(url).resize(70,70).onlyScaleDown().into(im1);

出現在URL中的圖像是在一些圖像的大小和加載非常大需要大量的時間,同時也吞噬了我的記憶,而裝載。有人可以幫助我有效和快速地加載圖像。

一個人

示例圖像可以在下面的網址找到: -

https://theunitedstates.io/images/congress/original/D000626.jpg

回答

4

您可以使用onlyScaleDown()來調整

Picasso 
    .with(context) 
    .load(imageUrl) 
    .resize(6000, 2000) 
    .onlyScaleDown() // the image will only be resized if it's bigger than 6000x2000 pixels. 
    .into(imageViewResizeScaleDown); 

或者你可以使用fit()

Picasso 
    .with(context) 
    .load(imageUrl) 
    .fit() 
    // call .centerInside() or .centerCrop() to avoid a stretched image 
    .into(imageViewFit); 

fit()is measu響鈴目標ImageView的尺寸並在內部使用resize()將圖像尺寸縮小爲ImageView的尺寸。關於fit()有兩件事要知道。首先,調用fit()可以延遲圖像請求,因爲畢加索需要等待ImageView的大小才能被測量。其次,您只能使用fit()和ImageView作爲目標(我們稍後會看到其他目標)。

優點是圖像處於儘可能低的分辨率,而不會影響其質量。分辨率越低意味着緩存中的數據量越少。這可以顯着減少圖像在應用程序內存佔用空間中的影響。總之,如果您希望在較短的加載時間內獲得較低的內存影響,fit()是一個很好的工具。

+0

你應該添加''.centerInside()'',否則圖像將被調整爲你指定的大小。 –

相關問題