1. 程式人生 > >ImageLoader圖片快取之簡單配置與詳細配置

ImageLoader圖片快取之簡單配置與詳細配置

ImageLoader依賴

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

1.簡單配置

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .diskCache(new UnlimitedDiskCache(new File(String.valueOf(getCacheDir().getAbsolutePath()))))
                .diskCacheSize(10*1024)
                .memoryCache(new LruMemoryCache(10*1024))
                .memoryCacheSize(10*1024)
                .build();
        ImageLoader.getInstance().init(configuration);
    }
}
 DisplayImageOptions obtions = new DisplayImageOptions.Builder()
                        .cacheOnDisk(true)
                        .cacheInMemory(true)
                        .build();

2.詳細配置

package com.example.myapplication.application;

import android.app.Application;
import android.graphics.Bitmap;

import com.example.myapplication.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;

import java.io.File;

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initLoder();
    }

    //初始化ImageLoder
    private void initLoder() {
        // DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
// See the sample project how to use ImageLoader correctly.
        //快取目錄
        File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "/images");
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
                .diskCacheExtraOptions(480, 800, null)
                .threadPoolSize(3) // default執行緒池數量
                .threadPriority(Thread.NORM_PRIORITY - 2) // default
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
                .memoryCacheSize(2 * 1024 * 1024)
                .memoryCacheSizePercentage(13) // default
                .diskCache(new UnlimitedDiskCache(cacheDir)) // default記憶體卡快取
                .diskCacheSize(50 * 1024 * 1024)//記憶體卡大小
                .diskCacheFileCount(100)//快取檔案數量
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
                //.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .defaultDisplayImageOptions(createDisplayOption())
                .writeDebugLogs()
                .build();
        ImageLoader.getInstance().init(config);
    }

    private DisplayImageOptions createDisplayOption() {
        // DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
// See the sample project how to use ImageLoader correctly.
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_launcher_background) // resource or drawable
                .showImageForEmptyUri(R.drawable.ic_launcher_background) // resource or drawable
                .showImageOnFail(R.drawable.ic_launcher_background) // resource or drawable
                .resetViewBeforeLoading(false)  // default
                .delayBeforeLoading(1000)
                .cacheInMemory(true) // default是否開啟記憶體快取
                .cacheOnDisk(true) // default是否開啟SD卡快取
		        .considerExifParams(false) // default
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
                .bitmapConfig(Bitmap.Config.RGB_565) // default
		        //.displayer(new SimpleBitmapDisplayer()) // default
                .displayer(new CircleBitmapDisplayer())
                //.displayer(new RoundedBitmapDisplayer(40))
                .build();
        return options;
    }
}