【问题标题】:Picasso's Target and centerCrop() and fit()Picasso 的 Target 和 centerCrop() 和 fit()
【发布时间】:2016-01-22 15:17:38
【问题描述】:

我的服务器上有一张图片,我想在我的 Android 客户端上使用 Picasso 显示它。 我想在 Picasso 上加载图像时添加默认图像,所以我使用Target 如下:

Picasso.with(UserActivity.this).load(imageUri.toString()).transform(new RoundedTransformation(500, 1)).into(
new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        userPic.setImageBitmap(bitmap);
    }

    @Override
    public void onBitmapFailed(Drawable drawable) {
        userPic.setImageBitmap(defaultDrawable);
    }

    @Override
    public void onPrepareLoad(Drawable drawable) {
        userPic.setImageBitmap(defaultDrawable);
    }
});

我想 centerCrop()fit() 这张图片,但它给了我一个错误,它告诉我我不能将它们与 Target 一起使用。无论如何在毕加索上使用这些功能?为什么他们不允许Target 使用这两个函数?

【问题讨论】:

    标签: android picasso


    【解决方案1】:

    您不需要使用Target 来实现您的目标。

    旁注,我不确定您是否真的可以同时使用fit()centerCrop()

    看到这个example

    Picasso.with(context)
        .load(url) // Equivalent of what ends up in onBitmapLoaded
        .placeholder(R.drawable.user_placeholder) // Equivalent of what ends up in onPrepareLoad
        .error(R.drawable.user_placeholder_error) // Equivalent of what ends up in onBitmapFailed
        .centerCrop()
        .fit()
        .into(imageView);
    

    【讨论】:

    • 你可以同时使用fit()centerCrop()。没问题
    【解决方案2】:

    试试这个

    Picasso.with(context)
      .load(url)
      .resize(50, 50)
      .centerCrop()
      .fit()
      .placeholder(defaultImageLink)
      .error(R.drawable.user_placeholder_error)
      .transform(new RoundedTransformation(500, 1))
      .into(imageView)

    【讨论】:

      【解决方案3】:

      我们还可以根据imageview的要求调整图片大小,如果图片太大,可以节省内存。

      回调方法可用于隐藏进度条并在图像加载失败时显示图像视图中的一些文本。

      Picasso.with(context)
      .load(url)
      .placeholder(R.drawable.placeholder_img)
      .error(R.drawable.error_img)
      .resize(450, 420)
      .centerCrop()
      .fit()
      .into(imageView, new Callback() {
              @Override
              public void onSuccess() {
                  progressBar.setVisibility(View.GONE);
              }
      
              @Override
              public void onError() {
                  progressBar.setVisibility(View.GONE);
                  image_failed_text.setVisibility(View.VISIBLE);
              }
          });
      

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-31
        相关资源
        最近更新 更多