tsurutanのつぶやき

備忘録としてつぶやきます

Picasso を使った画像表示

f:id:tsurutan:20161011104324p:plain

今回は神Jake Wharton 氏が作成したPicassoという画像のダウンロードやらキャッシュをやってくれるライブラリーについて紹介したいと思います。

使い方

使い方は至って簡単!!

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

loadに画像が置かれているurlを私intoに画像を表示したいImageViewを渡すだけです。

また、画像の加工もでき

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)

このようにすれば中央を中心に50*50でクロップすることができ、また角丸の画像を作りたいならば

public class CropSquareTransformation implements Transformation {
  @Override public Bitmap transform(Bitmap source) {
    int size = Math.min(source.getWidth(), source.getHeight());
    int x = (source.getWidth() - size) / 2;
    int y = (source.getHeight() - size) / 2;
    Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
    if (result != source) {
      source.recycle();
    }
    return result;
  }

  @Override public String key() { return "square()"; }
}

というTransformationを作成し

Picasso.with(context)
  .load(url)
  .transform(new CropSquareTransformation())
  .into(imageView)

といった感じで渡してください。

また、自分でTransformationを作るのが面倒くさいという方はwasabeefさんが様々なTransformationを作成してくださり、ライブラリーとして配布されているのでそちらを使うのがオススメです。

github.com

Picassoでは画像の読み込み中やエラーが出たときに表示する画像を指定することができます。

Picasso.with(context)
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);

また、ネットに上がっている画像のみではなくローカルに保存された画像もpathを指定することで表示することができます。

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);

キャッシュのサイズを制限することもできます。

int maxSize = MAX_CACHE_SIZE;
Picasso picasso = new Picasso.Builder(context)
                              .memoryCache(new LruCache(maxSize))
                              .build();

このmaxSizeはバイトを表します。

またデバッグでイメージがネット、キャッシュ、Diskのどれから呼び出されているのかsetIndicatorsEnabled(true)を使い可視化することができます。

f:id:tsurutan:20161011104952p:plain

どうやって使うの?

おなじみアプリケーションレベルのbuild.gradle

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

と記述するだけです!最高ですね!!

オススメの記事

www.tsurutan.com

www.tsurutan.com

www.tsurutan.com

ほんきで学ぶAndroidアプリ開発入門 第2版 Android SDK 7/Android Studio 2.X対応

ほんきで学ぶAndroidアプリ開発入門 第2版 Android SDK 7/Android Studio 2.X対応

黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ)

黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ)

  • 作者: 筒井俊祐,里山南人,松田承一,笹城戸裕記,毛受崇洋
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2016/06/18
  • メディア: 単行本
  • この商品を含むブログを見る