facebook twitter hatena line email

Android/ImageLoader

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

ImageLoaderとは

ウェブ上の画像をviewに表示させるためのキャッシュ機能付きライブラリ

ダウンロード

公式サイトからuniversal-image-loader-1.9.0.jarをダウンロード

https://github.com/nostra13/Android-Universal-Image-Loader#downloads

インストール

libsにjarを格納 プロパティ/javaのビルドパス/ライブラリ/jar追加からダウンロードしたjarを選択

AndroidManifest.xml

<manifest>
   <uses-permission android:name="android.permission.INTERNET" />
   <!-- Include next permission if you want to allow UIL to cache images on SD card -->
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   ...
   <application android:name="MyApplication">
       ...
   </application>
</manifest>

MyApplicationに初期設定追加

       ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
           .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
           .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
           .memoryCacheSize(2 * 1024 * 1024)
           .discCacheSize(50 * 1024 * 1024)
           .discCacheFileCount(100)
           .build();
       ImageLoader.getInstance().init(config);


viewにurl画像を設定

imageLoader.displayImage(imageUri, imageView);


urlからbitmap取得

Bitmap bmp = imageLoader.loadImageSync(imageUri);

表示オプション

DisplayImageOptions options = new DisplayImageOptions.Builder()
       .showImageOnLoading(R.drawable.ic_stub) // resource or drawable
       .showImageForEmptyUri(R.drawable.ic_empty) // resource or drawable
       .showImageOnFail(R.drawable.ic_error) // resource or drawable
       .resetViewBeforeLoading(false)  // default
       .delayBeforeLoading(1000)
       .cacheInMemory(false) // default
       .cacheOnDisc(false) // default
       .preProcessor(...)
       .postProcessor(...)
       .extraForDownloader(...)
       .considerExifParams(false) // default
       .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
       .bitmapConfig(Bitmap.Config.ARGB_8888) // default
       .decodingOptions(...)
       .displayer(new SimpleBitmapDisplayer()) // default
       .handler(new Handler()) // default
       .build();
  • オプションをつけてviewにurl画像を設定
ImageLoader.getInstance().displayImage(imageUrl, imageView, options);
  • オプションをつけてurlからbitmap取得
ImageSize targetSize = new ImageSize(120, 80); // result Bitmap will be fit to this size
Bitmap bmp = imageLoader.loadImageSync(imageUri, targetSize, displayOptions);

画像幅修正

int height = 120;
int widht = 100;
imageView.setLayoutParams(new LinearLayout.LayoutParams(height, width));
ImageSize targetSize = new ImageSize(height, width);
Bitmap bmp = loader.loadImageSync(imageUrl, targetSize, displayOptions);
imageView.setImageBitmap(bmp);

画像正方形

int widht = 100;
imageView.setLayoutParams(new LinearLayout.LayoutParams(width, width));
imageView.setScaleType(ScaleType.CENTER_CROP);
ImageSize targetSize = new ImageSize(width, width);
Bitmap bmp = loader.loadImageSync(imageUrl, targetSize, displayOptions);
imageView.setImageBitmap(bmp);

画像uri

String imageUri = "http://site.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)