【发布时间】:2015-08-24 13:57:41
【问题描述】:
如何使用此代码将进度条添加到毕加索库以下载照片
String Url = "link url";
Picasso.with(G.currentActivity).load(Url).into(imageView);
【问题讨论】:
如何使用此代码将进度条添加到毕加索库以下载照片
String Url = "link url";
Picasso.with(G.currentActivity).load(Url).into(imageView);
【问题讨论】:
该功能目前不可用。但是,您可以在图像视图的顶部放置一个进度条,并在下载图像时附加一个回调,然后隐藏进度条。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:scaleType="center"/>
<ProgressBar
style="@android:style/Widget.Holo.Light.ProgressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
</RelativeLayout>
然后在你的活动中像这样
import com.squareup.picasso.Callback;
public class MyActivity extends Activity implements Callback {
private View loaderView;
private ImageView imageView;
// ...
private synchronized void loadImage(Uri uri)
{
Picasso.with(this).load(uri)
.error(R.drawable.ic_error)
.placeholder(R.drawable.ic_placeholder)
.resize(getImageWidth(), getImageHeight())
// passes this object as it's callback when image is loaded
.centerCrop().into(imageView, this);
}
@Override
public void onSuccess()
{
// hide the loader and show the imageview
loaderView.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
}
@Override
public void onError()
{
// hide the loader and show the imageview which shows the error icon already
loaderView.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
}
}
【讨论】:
Picasso 库中目前没有进度回调。
根据作者 Jake Wharton 的说法,这在未来不太可能实现到库中,也不容易实现。根据feature request:
[Progress Callbacks] 需要复杂的机制,但收益甚微。我们建议您使用不确定的进度指示器,因为图像下载应该相对较快。
我建议您遵循使用不确定进度指示器的建议 - 如果您的图像需要一段时间才能下载,您可能需要调查一下您是否在加载图像之前在 UI 线程上做了太多工作,或者是否您正在加载的图像文件很大。
【讨论】:
我们可以为正在加载的图像添加进度条或以其他方式处理回调:
// Show progress bar
progressBar.setVisibility(View.VISIBLE);
// Hide progress bar on successful load
Picasso.with(this).load(imageUrl)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
if (progressBar != null) {
progressBar.setVisibility(View.GONE);
}
}
@Override
public void onError() {
}
});
我从here找到解决方案
【讨论】: