首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Picasso使用简介及分析(10)

Picasso使用简介及分析(10)

以ImageViewAction为例看下complete中的实现

    @Override   
    public void complete(Bitmap result, Picasso.LoadedFrom from) {   
      if (result == null) {   
        throw new AssertionError(String.format("Attempted to complete action with no result!\n%s", this));  
      }  
      ImageView target = this.target.get();  
      if (target == null) {   
        return;  
      }  
      Context context = picasso.context;  
      //是否展示来源的标签,默认不展示。
      boolean indicatorsEnabled = picasso.indicatorsEnabled;
      PicassoDrawable.setBitmap(target, context, result, from, noFade, indicatorsEnabled);  
      if (callback != null) {   
        callback.onSuccess();  
      }
    }
    //PicassoDrawable中setBitmap方法的实现
    static void setBitmap(ImageView target, Context context, Bitmap bitmap,   
            Picasso.LoadedFrom loadedFrom, boolean noFade, boolean debugging) {
     Drawable placeholder = target.getDrawable();  
     if (placeholder instanceof AnimationDrawable) {   
        ((AnimationDrawable) placeholder).stop();  
      }  
     //最终扔到ImageView上现实的的是PicassoDrawable
     PicassoDrawable drawable = new PicassoDrawable(context, bitmap, placeholder, loadedFrom, noFade, debugging);  
     target.setImageDrawable(drawable);}

到这里,Picasso加载图片的逻辑就分析完了。下面我们看下Square还留给我们什么其他可以学习的东西。
返回列表