2014-09-12 2 views
10

Я использую библиотеку Picasso для загрузки изображения с URL-адреса. Код, который я использовал, приведен ниже.android get Drawable image после загрузки picasso

Picasso.with(getContext()).load(url).placeholder(R.drawable.placeholder) 
       .error(R.drawable.placeholder).into(imageView); 

Что я хочу сделать, так это получить изображение, загруженное с URL-адреса. Я использовал

Drawable image = imageView.getDrawable(); 

Однако, это всегда будет возвращать изображение заполнителя вместо загрузки изображения с URL-адреса. У вас есть идеи? Как мне получить доступ к чертежам, которые он просто загрузил из url.

Заранее спасибо.

ответ

17

Это связано с тем, что изображение загружается асинхронно. Вы должны получить вытяжку, когда он закончил загрузку в поле зрения:

Target target = new Target() { 
      @Override 
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
       imageView.setImageBitmap(bitmap); 
       Drawable image = imageView.getDrawable(); 
      } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) {} 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) {} 
    }; 

    Picasso.with(this).load("url").into(target); 
+0

Как я могу использовать LoadBitmap()? Мне нужно позвонить Пикассо дважды? – Shumin

+0

Нет, это просто метод пустоты, который вы бы назвали для загрузки изображения. Вам это не нужно. (см. обновленный ответ) – Shane

+0

Это бесполезно, 'fit, centercrop' не будет работать, что точка в использовании Picasso тогда? вы можете получить вытяжку с нормальным Пикассо обратного вызовом: 'в (targetImageView, новый обратный вызов() { \t \t \t @Override общественного недействительный OnSuccess() { targetImageView.getDrawable(); }' – user924

1
 mImageView.post(new Runnable() { 
      @Override 
      public void run() { 
       mPicasso = Picasso.with(mImageView.getContext()); 
       mPicasso.load(IMAGE_URL) 
         .resize(mImageView.getWidth(), mImageView.getHeight()) 
         .centerCrop() 
         .into(mImageView, new com.squareup.picasso.Callback() { 
          @Override 
          public void onSuccess() { 
           Drawable drawable = mImageView.getDrawable(); 
           // ... 
          } 

          @Override 
          public void onError() { 
           // ... 
          } 
         }); 
      } 
     }); 
+1

Вы можете добавить некоторые пояснения почему этот код решает проблему. – mustaccio

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

  • Нет связанных вопросов^_^