Picasso是Square公司開源的一個(gè)Android平臺(tái)上的圖片加載框架
核心類:
Picasso:負(fù)責(zé)圖片下載也切、變換、緩存的管理器妥曲,當(dāng)它收到一個(gè)圖片下載請(qǐng)求的時(shí)候贾费,它會(huì)創(chuàng)建Request并提交給Dispatcher
Dispatcher: Dispatcher會(huì)尋找對(duì)應(yīng)的處理器RequestHandler,并將請(qǐng)求與該處理器一起提交給線程池執(zhí)行
圖片加載步驟:
創(chuàng)建 -> 入隊(duì) -> 執(zhí)行 -> 解碼 -> 變化 -> 批處理 -> 完成 -> 分發(fā) -> 顯示
使用
Picasso.get().load(url).into(first_img)
//加載一張圖片 旋轉(zhuǎn)45°
Picasso.get()
.load(URL)
.rotate(45f)
.placeholder(R.drawable.placeholder_disk)
.into(imgOne);
//加載一張圖片并設(shè)置一個(gè)回調(diào)接口
Picasso.get()
.load(URL)
.placeholder(R.drawable.placeholder_disk)
.into(imgOne, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError(Exception e) {
}
});
//預(yù)加載一張圖片
Picasso.get().load(URL).fetch();
//同步加載一張圖片,注意只能在子線程中調(diào)用并且Bitmap不會(huì)被緩存到內(nèi)存里.
new Thread() {
@Override
public void run() {
try {
final Bitmap bitmap = Picasso.get().load(URL).get();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
//加載一張圖片旋轉(zhuǎn)并且添加一個(gè)Transformation,可以對(duì)圖片進(jìn)行各種變化處理,例如圓形頭像.
Picasso.get().load("url").rotate(10).transform(new Transformation() {
@Override
public Bitmap transform(Bitmap source) {
//處理Bitmap
return null;
}
@Override
public String key() {
return null;
}
}).into(imgTwo);
//加載一張圖片并按照指定尺寸以centerInside()的形式縮放.并設(shè)置加載的優(yōu)先級(jí)為高.注意centerInside()或centerCrop()
//只能同時(shí)使用一種,而且必須指定resize()或者resizeDimen();
Picasso.get().load(URL)
.resize(400, 400)
.centerInside()
.priority(Picasso.Priority.HIGH)
.into(imgTwo);
//加載一張圖片并設(shè)置tag,可以通過(guò)tag來(lái)暫定或者繼續(xù)加載,可以用于當(dāng)ListView滾動(dòng)是暫定加載.停止?jié)L動(dòng)恢復(fù)加載.
Picasso.get().load(URL).tag(getContext()).into(imgTwo);
Picasso.get().pauseTag(getContext());
Picasso.get().resumeTag(getContext());
參考: