2016-10-02 3 views
0

Кто-нибудь знает, как загрузить изображение, затем используйте тот же экземпляр Picasso для загрузки в несколько ImageView? Сейчас я использую (довольно плохое) обходное решение, подобное приведенному ниже, чтобы убедиться, что изображение уже кэшировано и не загружено снова.Picasso - Загрузите изображение один раз, затем загрузите его в несколько изображений 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 Я нашел способ. Отредактировал мой вопрос –

Смежные вопросы