Edited at

Picassoでサムネ->オリジナル画像をシームレスに表示させる

More than 3 years have passed since last update.


やりたいこと

最初にサムネを表示させて,解像度の大きな画像はロードが完了してから表示させたい。

例えばMaster画面のサムネが並んだリストを選択したあと,Detail画面で大きな画像を表示させるとき。すでにメモリに読んでるはずのサムネを表示しておいて、ロード完了まで何も表示されないのを避けたい。


実装

Picassoの導入とかはほかにまかせます。

Picasso.with(mContext).load(thumbUrl).into(imageView, new Callback(){

@Override
public void onSuccess() {
Drawable drawable = imageView.getDrawable();
Picasso.with(mContext).load(originalUrl).placeholder(drawable).into(imageView);
}

@Override
public void onError() {
Picasso.with(mContext).load(originalUrl).into(imageView);
}
});

Callbackを使ってサムネのロード後にオリジナル画像を読み込むようにします。

また,サムネロードした直後にload(originalUrl).into(imageView)するとサムネの表示がされないので、サムネをdrawableとして取得してplaceholderに設定します。