Android网络图片加载框架:Universal-ImageLoader简介

  • 网络图片加载框架:Universal-ImageLoader
    • github开源地址:https://github.com/nostra13/Android-Universal-Image-Loader
    • 特点:
    • 支持本地图片,网络图片多线程异步加载及缓存处理
    • 根据自己项目个性化配置ImageLoader来加载图片
    • 图片加载过程监听处理,可以暂停图片加载,重新加载等
    • 根据当前内存情况自动处理图片,防止OOM
    • 不完善之处:没有对本地文件压缩处理的相关方法,默认都是Src模式设置图片,没有针对图片的Background属性开放API
      使用:
/** * 使用universal-imageloader框架时,在Application中进行初始化及配置操作 * @description: * @date 2016-1-12 下午4:18:34 */
public class MyApplication extends Application {
public static ImageLoader loader;
    @Override
    public void onCreate() {
        initConfiguration();
    }

    /** * 初始化ImageLoaderConfiguration,通常不需要设置这么多属性 * @description: * @author ldm * @date 2016-1-12 下午4:42:31 */
    private void initConfiguration() {
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(480, 800) // 设置内存缓存文件的最大长宽
                .diskCacheExtraOptions(480, 800, null) // 设置本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
                .threadPoolSize(3) // 设置线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2) // 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO) // 设置缓存策略
                .denyCacheImageMultipleSizesInMemory()// 设置缓存显示不同大小的同一张图片
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) // 设置通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024) // 设置内存缓存的最大值
                .memoryCacheSizePercentage(13) // 设置内存缓存最大大小占当前应用可用内存的百分比,默认是当前应用可用内存的1/8
                .discCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory() + "mydata/imagecaches")))// 设置缓存文件目录
                .diskCacheSize(50 * 1024 * 1024) // 设置 sd卡(本地)缓存的最大值50M
                .diskCacheFileCount(100) // 设置可以缓存的文件数量
                // .diskCacheFileNameGenerator(new Md5FileNameGenerator()) 设置保存的URL用MD5加密
                .imageDownloader(new BaseImageDownloader(this)) // 设置默认最大连接时间
                .imageDecoder(new BaseImageDecoder(false)) // default
                .defaultDisplayImageOptions(getDisplayOptions()) // 设置自定义的DisplayImageOptions
                .writeDebugLogs() // 设置打印log
                .build(); // 开始构建
        ImageLoader.getInstance().init(config);
        loader=ImageLoader.getInstance();
    }

    /** * 自定义DisplayImageOptions * @description: * @date 2016-1-12 下午4:46:47 */
    private DisplayImageOptions getDisplayOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载中显示的图片
                .showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或错误时显示的图片
                .showImageOnFail(R.drawable.ic_launcher) // 设置图片加载失败时候显示的图片
                .cacheInMemory(true)// 设置下载的图片是否缓存在内存中
                .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中
                .considerExifParams(true) // 是否考虑JPEG图像EXIF参数(旋转,翻转)
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)// 设置图片以如何的编码方式显示
                .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型
                .delayBeforeLoading(0)// 设置的下载前的延迟时间
                .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
                .displayer(new RoundedBitmapDisplayer(20))// 设置为圆角,弧度为多少,不推荐用!
                .displayer(new FadeInBitmapDisplayer(100))// 设置加载好后渐入的动画时间,可能会出现闪动
                .build();// 构建完成
        return options;
    }
}
在Activity中使用:

这里写代码片

public class MainActivity extends Activity {
    private ImageView loader_iv;
    private ImageLoader loader;
    private String url="";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loader_iv=(ImageView)findViewById(R.id.loader_iv);
        loader=MyApplication.loader;//
        loader=ImageLoader.getInstance();
        loader.displayImage(url, loader_iv);//loader.displayImage有很多参数不同的方法,方便我们针对 不同情况使用
        //如果显示本地图片
        url="file:///"+"文件路径";
        loader.displayImage(url, loader_iv);
    }
}

最后不要忘记在AndroidManifest.xml中配置MyApplication及INTENT网络请求权限 。更多 方法正在学习中。

你可能感兴趣的:(Android网络图片加载框架:Universal-ImageLoader简介)