我的服务器上有一个图像,我想在我的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
这两个函数?
答案 0 :(得分:10)
您无需使用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);
答案 1 :(得分:3)
试试这个
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)
答案 2 :(得分:2)
我们还可以根据图像视图的要求调整图像大小,如果图像太大,将节省内存使用量。
回调方法可用于隐藏进度条并在图像中显示一些文本视图加载失败。
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);
}
});