• Android_Universal-Image-Load使用


    一,快速使用(确保ImageLoader只初始化一次,这样图片缓存会更加优秀。)

    场景:为ImageView设置一张指定Uri的图片。

    1,导包,配置联网,读写SD卡权限。

    2,初始化:

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();

    ImageLoader.getInstance.init(config);

    3,参数配置

    DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.ic_launcher)
    .showImageOnFail(R.drawable.ic_launcher)
    .imageScaleType(ImageScaleType.EXACTLY)
    .showImageForEmptyUri(R.drawable.ic_launcher).cacheInMemory(true)
    .cacheOnDisc(true).displayer(new FadeInBitmapDisplayer(300))
    .imageScaleType(ImageScaleType.EXACTLY).build();

    4,设置图片。

    ImageLoader.displayImage(URI,mImageView,displayImageOptions);

    二,功能(翻译自GitHub)

    来源: https://github.com/dodola/Android-Universal-Image-Loader

    功能:1,多线程图片加载;

    2,尽可能协调了最广泛的图片加载配置(子线程,下载,解码,内存&硬盘缓存,显示图片,和其他);

    3,尽可能的监听下载进程;

    4,尽可能的为各种参数定制显示图片调用;

    5,支持桌面小空间

    支持Android 2.0以上版本。

    三,初始化参数介绍:

    Configuration

    所有的选项在配置建造器中都是可选择的。使用那些你真正想要定制的。

    // DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
    File cacheDir = StorageUtils.getCacheDirectory(context);
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
            .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
            .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75)
            .taskExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
            .taskExecutorForCachedImages(AsyncTask.THREAD_POOL_EXECUTOR)
            .threadPoolSize(3) // default
            .threadPriority(Thread.NORM_PRIORITY - 1) // default
            .tasksProcessingOrder(QueueProcessingType.FIFO) // default
            .denyCacheImageMultipleSizesInMemory()
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .discCache(new UnlimitedDiscCache(cacheDir)) // default
            .discCacheSize(50 * 1024 * 1024)
            .discCacheFileCount(100)
            .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
            .imageDownloader(new BaseImageDownloader(context)) // default
            .imageDecoder(new BaseImageDecoder()) // default
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
            .enableLogging()
            .build();
    
    
    
    
    Display Option
    显示选项,可以被任何一个显示线程请求。
    // DON'T COPY THIS CODE TO YOUR PROJECT! This is just example of ALL options using.
    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)
    //如果想要从缓存中加载图片 ,下面两句话的参数设置为true。
            .cacheInMemory(false) // default。
    .cacheOnDisc(false) // default
            .preProcessor(...)
            .postProcessor(...)
            .extraForDownloader(...)
            .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
            .bitmapConfig(Bitmap.Config.ARGB_8888) // default
            .decodingOptions(...)
            .displayer(new SimpleBitmapDisplayer()) // default
            .handler(new Handler()) // default
            .build();
    四,用例
    显示图片所使用的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)
    注意:使用drawable://除非你真的需要他。时刻要注意使用本地图片加载方法:setImageResource带代替ImageLoader。
    五,有用的信息
    1,ImageLoader.getInstance().init(config); // 在应用开启的时候初始化。
    2,<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>sd卡缓存是需要写入权限
    3,ImageLoader根据ImageView的width,height确定图片的宽高。
    4,如果经常出现OOM
    ①减少配置之中线程池的大小,(.threadPoolSize).推荐1-5;
    ②使用.bitmapConfig(Bitmap.config.RGB_565)代替ARGB_8888;
    ③使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者try.imageScaleType(ImageScaleType.EXACTLY);
       ④避免使用RoundedBitmapDisplayer.他会创建新的ARGB_8888格式的Bitmap对象;
       ⑤使用.memoryCache(new WeakMemoryCache()),不要使用.cacheInMemory();
    5,内存缓存,sd卡缓存,显示图片,可以使用已经初始化过的实现;
    6,为了避免使用list,grid,scroll,你可以使用
    boolean pauseOnScroll = false; // or true
    boolean pauseOnFling = true; // or false
    PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
    listView.setOnScrollListener(listener);
  • 相关阅读:
    图片音乐 上传、下载
    表格类型数据,Excel csv导入,导出操作
    逐行读取txt文件,分割,写入txt。。。上传,下载
    性能分析四
    性能分析三
    postman断言
    postman+Newman语法参数
    shell_03
    shell_02
    shell_01
  • 原文地址:https://www.cnblogs.com/changkai244/p/4108737.html
Copyright © 2020-2023  润新知