private void loadProjectPhoto() {
    Bitmap bitmap = picassoCache.getPlaceholder(project.getBigPhotoUrl());
    boolean bigPhotoMustBeFetched = bitmap == null;
    if (bigPhotoMustBeFetched) {
      bitmap = picassoCache.getPlaceholder(project.getPhotoUrl());
      boolean placeholderAlreadyFetched = bitmap != null;
      if (placeholderAlreadyFetched) {
        binding.projectPhotoIv.setImageBitmap(bitmap);
      }
    }
    // Make sure that transition starts soon even if image is not ready.
    binding.projectPhotoIv.postDelayed(
        this::supportStartPostponedEnterTransition, MAX_TRANSITION_DELAY);
    Picasso.with(this)
        .load(project.getBigPhotoUrl())
        .resize(imageWidth, imageHeight)
        .onlyScaleDown()
        .centerCrop()
        .transform(PaletteAndAplaTransformation.instance())
        .into(
            binding.projectPhotoIv,
            new Callback() {
              @Override
              public void onSuccess() {
                Bitmap bitmap =
                    ((BitmapDrawable) binding.projectPhotoIv.getDrawable()).getBitmap(); // Ew!
                Palette palette = PaletteAndAplaTransformation.getPalette(bitmap);
                binding.detailsContainer.setBackgroundColor(
                    palette.getDarkVibrantColor(Color.BLACK));
                supportStartPostponedEnterTransition();
              }

              @Override
              public void onError() {
                supportStartPostponedEnterTransition();
              }
            });
  }