2015-08-24 21 views

回答

2

目前在毕加索库没有进展回调。根据作者杰克·沃顿(Jake Wharton)的说法,这不太可能在未来实施到图书馆中,并且不易实施。按照feature request

[进度回调]将需要复杂的机制来非常小的收益。我们建议您使用不确定的进度指示器,因为图片下载应该相对较快。

我会建议遵循使用不确定进度指示器的建议 - 如果您的图像需要一段时间下载,您可能需要调查是否在加载图像之前在UI线程上做了太多工作或者您正在加载的图像是大文件大小。

+1

我不明白你的意思@ sky_man847 –

4

此功能暂时不可用。但是,您可以在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); 
    } 

} 
+0

谢谢.....我可以使用片段吗? –

+0

当然你可以... –

+0

我不能使用代码片段 –

0

我们可以添加一个进度条或以其他方式处理的图像回调正在加载有:

// 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() { 

     } 
}); 

我找到解决方案from here