2015-08-24 27 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