Search code examples
androidbitmappicasso

Use Picasso to get a callback with a Bitmap


I'm using Picasso to download images for my app.

I'm in a situation where I need to access the Bitmap first before it's loaded into the ImageView. The presence of the Downloader.Response class seems to suggest this is possible, but I can't find any use examples. I don't want to write a bunch more code to asynchronously handle this one particular case if it's possible to do with Picasso.

Can anyone show me how to do it?


Solution

  • Found the answer on github in case anyone is wondering:

    private Target target = new Target() {
          @Override
          public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
          }
    
          @Override
          public void onBitmapFailed(Drawable errorDrawable) {
          }
    
          @Override
          public void onPrepareLoad(Drawable placeHolderDrawable) {
          }
    }
    
    private void someMethod() {
       Picasso.with(this).load("url").into(target);
    }
    
    @Override 
    public void onDestroy() {  // could be in onPause or onStop
       Picasso.with(this).cancelRequest(target);
       super.onDestroy();
    }
    

    The post recommends not using an anonymous callback, and instead using an instance variable for target.