使用毕加索将图像调整到全宽和固定高度

我有一个垂直线性布局,其中一个项目是一个 ImageView加载使用毕加索。我需要提高图像的宽度,以满足设备宽度,并显示图像的中心部分裁剪一个固定的高度(150dp)。我现在有以下代码:

Picasso.with(getActivity())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.resize(screenWidth, imageHeight)
.centerInside()
.into(imageView);

我应该在 screenWidthimageHeight(= 150dp)中输入哪些值?

101817 次浏览

你要找的是:

.fit().centerCrop()

这些是什么意思:

  • 等待,直到 ImageView已经测量和调整图像的大小,以完全匹配其大小。
  • 按照高宽比缩放图像,直到填满大小为止。裁剪顶部和底部或左和右,以便它与大小完全匹配。

在某些情况下,fit ()是无用的。在您必须等待宽度和高度测量结束之前。因此您可以使用 globallayoutlisten。例如:

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
Picasso.with(getActivity())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.resize(screenWidth, imageHeight)
.fit
.centerInside()
.into(imageView);
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});