Skip to content

Latest commit

 

History

History
95 lines (79 loc) · 2.29 KB

picasso.md

File metadata and controls

95 lines (79 loc) · 2.29 KB

Picasso

Square 所推出的 Image Loading/Caching Library。相較於以前使用過的Android-Universal-Image-Loader來說,設定簡單,而且Code看起來也比較順眼,後來所有顯示圖片的部份都利用 Picasso 代勞囉

##Gradle

compile 'com.squareup.picasso:picasso:2.5.2'

##基本用法 只要會這幾招,應該就可以應付 80% 的狀況

  • 基本寫法
/**
 *   url : 圖片的網址
 *   imageView : 操作的ImageView Object
 */
Picasso.with(context)
    .load(url)
    .into(imageView);
  • 加上 Placeholder & Error Image
Picasso.with(context)
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);
  • 除了網路圖片,也可以讀取 Local 的圖片
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);

##進階用法 偶爾會有一些特別的需求需要克服

  • 加上 CallBack
Picasso.with(context).load(url).into(imageView, new Callback() {
        @Override
        public void onSuccess() {
        
        }

        @Override
        public void onError() {
        
        }
});
  • 縮放圖片,尤其來源是大圖的時候,可以節省流量 & memory
/**
 * resize : 只取解析度 50 * 50
 * centerCrop : 取原圖的中間
 */
Picasso.with(context)
    .load(url)
    .resize(50, 50)
    .centerCrop()
    .into(imageView)
/**
 *  如果嫌麻煩,可以直接用fit()
 *  可以直接依據 imageView,縮放(注意!有放大!)至適當的大小
 */
Picasso.with(context)
    .load(url)
    .fit()
    .into(imageView)
  • 要抓 Drawable,如不是直接塞進 ImageView
Picasso.with(this).load(url).into(new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {      
      
        }

        @Override
        public void onBitmapFailed() {
      
        }
});

##Reference

  1. Picasso
  2. 某人寫的,更詳盡的使用說明