毕加索作物观看

时间:2015-05-08 23:47:36

标签: android picasso

我如何使用毕加索将图像裁剪为图像视图?

默认似乎是缩小它所以整个事情显示 适合似乎伸展它。 centercrop本身就打破了。 fit centercrop似乎与fit fit相同

由于

3 个答案:

答案 0 :(得分:8)

尝试使用centerCrop()

Picasso.with(mContext)
.load(url)
.centerCrop()
.resize(yourImageView.getMeasuredWidth(),yourImageView.getMeasuredHeight())
.error(R.drawable.error)
.placeholder(R.drawable.blank_img)
.into(yourImageView);

您必须添加addOnPreDrawListener侦听器,否则在未绘制imageview时,您将获得0的宽度和高度。有关如何使用addOnPreDrawListener的详细信息,请转到here

答案 1 :(得分:4)

CenterCrop()是一种裁剪技术,可以缩放图像,使其填充ImageView的请求范围,然后裁剪额外的。 ImageView将完全填充,但可能无法显示整个图像。

Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200) // resizes the image to these dimensions (in pixel)
.centerCrop() 
.into(imageViewResizeCenterCrop);

CenterInside()是一种裁剪技术,可以缩放图像,使两个维度都等于或小于ImageView的请求范围。图像将完全显示,但可能无法填满整个ImageView

Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside() 
.into(imageViewResizeCenterInside);

讨论的选项应涵盖您对图像大小调整和缩放功能的需求。 Picasso有一个最后的辅助功能,它非常有用:fit()

Picasso  
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.fit()
// call .centerInside() or .centerCrop() to avoid a stretched image
.into(imageViewFit);

答案 2 :(得分:3)

您必须在调用centerCrop或centerInside()方法之前调用resize,否则Picasso会抱怨目标宽度/高度为0。

public class MainActivity extends Activity {
ImageView imageView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imageView = (ImageView) findViewById(R.id.imageView);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    if (hasFocus) {
        Picasso.with(this)
                .load("http://i.imgur.com/removed.png")
                .resize(imageView.getMeasuredWidth(), imageView.getMeasuredHeight())
                .centerCrop() // or centerInside()
                .into(imageView);
    }
    super.onWindowFocusChanged(hasFocus);
}
}

这是在布局中定义的imageView:

 <ImageView
    android:layout_width="160dp"
    android:layout_height="160dp"
    android:id="@+id/imageView"
    />