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
,如不是直接塞進 ImageViewPicasso.with(this).load(url).into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override public void onBitmapFailed() { } });