2016-10-02 61 views
0

有誰知道如何下載一次圖像,然後使用相同的Picasso實例加載到多個ImageView?現在我正在使用一個(非常糟糕)的解決方法,如下圖所示,以確保圖像已經被緩存並且不會再次下載。畢加索 - 下載圖像一次,然後加載到多個ImageView

Picasso.with(container.getContext()).load(photo.getPath()).placeholder(R.drawable.placeholder_outfit).fit().centerCrop().into(image1, new Callback() { 
    @Override 
    public void onSuccess() { 
     Picasso.with(container.getContext()).load(photo.getPath()).placeholder(R.drawable.placeholder_outfit).fit().centerCrop().into(image2); 
    } 

    @Override 
    public void onError() { 

    } 
}); 
+0

檢查下面 –

+0

所有畢加索我的回答將下載的圖像一次。它會緩存圖像。只需再次使用它。 – DeeV

回答

0

你可以這樣說:

Picasso.with(container.getContext()) 
     .load(photo.getPath()) 
     .placeholder(R.drawable.placeholder_outfit) 
     .fit() 
     .centerCrop().into(image1, new Callback() { 

      @Override 
      public void onSuccess() { 
       imageView2.setImageDrawable(image1.getDrawable()); //Get the ImageView's image (this won't download it, it will get the downloaded image) and set it to your second imageView. 
      } 

      @Override 
      public void onError() { 

      } 
     }); 

要使用centerCrop(),只需添加:

imageView2.setScaleType(ImageView.ScaleType.CENTER_CROP); 
+0

不會避免使用''Picasso.fit()。centerCrop()'自動調整大小'imageView2'? –

+0

@NicolaBeghin如果'imageView2'具有'image1'的相同尺寸,那麼是的。否則,不。我正在考慮另一種解決方案:) –

+0

@NicolaBeghin我找到了一種方法。編輯我的問題 –