【问题标题】:How to add progress bar to Picasso library如何将进度条添加到毕加索图书馆
【发布时间】:2015-08-24 13:57:41
【问题描述】:

如何使用此代码将进度条添加到毕加索库以下载照片

String Url = "link url";
Picasso.with(G.currentActivity).load(Url).into(imageView);

【问题讨论】:

    标签: android picasso


    【解决方案1】:

    该功能目前不可用。但是,您可以在图像视图的顶部放置一个进度条,并在下载图像时附加一个回调,然后隐藏进度条。

    <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);
      }
    
    }
    

    【讨论】:

      【解决方案2】:

      Picasso 库中目前没有进度回调。

      根据作者 Jake Wharton 的说法,这在未来不太可能实现到库中,也不容易实现。根据feature request:

      [Progress Callbacks] 需要复杂的机制,但收益甚微。我们建议您使用不确定的进度指示器,因为图像下载应该相对较快。

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

      【讨论】:

        【解决方案3】:

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

        // 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找到解决方案

        【讨论】:

          猜你喜欢
          • 2014-10-10
          • 1970-01-01
          • 2014-10-29
          • 2014-10-02
          • 1970-01-01
          • 2016-04-18
          • 2020-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多