universalimageloader相关

//使用方法

ImageLoader.getInstance().displayImage(advert.getImgUrl(), imageView, mOptions,
                        new SimpleImageLoadingListener() {
                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                        super.onLoadingFailed(imageUri, view, failReason);
                        // 加载失败时的处理
                        Log.i("tag", "imageUri=" + imageUri);
                        
                    }
                    
                });
           

//application初始化相关设置参数,oncreate()调用

// 初始化ImageLoader
    private void initImageLoaderConfig() {
        String cacheDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ybs/imageloader";
        File cacheFile = new File(cacheDir);
        if (!cacheFile.exists())
            cacheFile.mkdir();
        ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(getApplicationContext());
        config.threadPriority(Thread.MIN_PRIORITY + 2);
        config.denyCacheImageMultipleSizesInMemory();
        config.diskCache(new UnlimitedDiscCache(cacheFile));
        config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
        config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
        config.tasksProcessingOrder(QueueProcessingType.LIFO);
        config.threadPoolSize(3);
        config.writeDebugLogs();
        config.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)).memoryCacheSize(2 * 1024 * 1024);
        com.nostra13.universalimageloader.utils.L.disableLogging();
        // Initialize ImageLoader with configuration.
        // config.imageDownloader(new
        // BaseImageDownloader(getApplicationContext(), 300, readTimeout))
        ImageLoader.getInstance().init(config.build());
    }

//***以下代码来自 来源:梦痕的专栏   www.2cto.com/kf/201412/361295.html**********************************************************************************************************

//参数配置相关说明

DisplayImageOptions options = new DisplayImageOptions.Builder()

        .showImageOnLoading(R.drawable.ic_stub) // 设置图片下载期间显示的图片

        .showImageForEmptyUri(R.drawable.ic_empty) // 设置图片Uri为空或是错误的时候显示的图片

        .showImageOnFail(R.drawable.ic_error) // 设置图片加载或解码过程中发生错误显示的图片

        .resetViewBeforeLoading(false// default 设置图片在加载前是否重置、复位

        .delayBeforeLoading(1000// 下载前的延迟时间

        .cacheInMemory(false) // default  设置下载的图片是否缓存在内存中

        .cacheOnDisk(false) // default  设置下载的图片是否缓存在SD卡中

        .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  还可以设置圆角图片new RoundedBitmapDisplayer(20)

        .handler(new Handler()) // default

        .build();

//注:如果DisplayImageOption没有传递给ImageLoader.displayImage(…)方法,那么从配置默////认显示选项
//(ImageLoaderConfiguration.defaultDisplayImageOptions(…))将被使用。

1).imageScaleType(ImageScaleType imageScaleType)  //设置图片的缩放方式

缩放类型mageScaleType:

EXACTLY :图像将完全按比例缩小的目标大小

    EXACTLY_STRETCHED:图片会缩放到目标大小完全

    IN_SAMPLE_INT:图像将被二次采样的整数倍

    IN_SAMPLE_POWER_OF_2:图片将降低2倍,直到下一减少步骤,使图像更小的目标大小   

    NONE:图片不会调整

2).displayer(BitmapDisplayer displayer)   //设置图片的显示方式

显示方式displayer:

    RoundedBitmapDisplayer(int roundPixels)设置圆角图片

    FakeBitmapDisplayer()这个类什么都没做

    FadeInBitmapDisplayer(int durationMillis)设置图片渐显的时间

    SimpleBitmapDisplayer()正常显示一张图片

 

 

.considerExifParams(true//是否考虑JPEG图像EXIF参数(旋转,翻转)

.displayer(new FadeInBitmapDisplayer(100))// 图片加载好后渐入的动画时间

//相关构造方法

imageUrl   图片的URL地址

imageView  显示图片的ImageView控件 

options    DisplayImageOptions配置信息

listener   图片下载情况的监听

progressListener  图片下载进度的监听

 

ImageLoader.getInstance().displayImage(uri, imageView);

2、  ImageLoader.getInstance().displayImage(uri, imageView, options);

3、  ImageLoader.getInstance().displayImage(uri, imageView, listener);

4、  ImageLoader.getInstance().displayImage(uri, imageView, options, listener);

5、  ImageLoader.getInstance().displayImage(uri, imageView, options, listener, progressListener);

 

ImageLoader.getInstance().displayImage(uri, imageView, options,

        new ImageLoadingListener() {

 

            @Override

            public void onLoadingStarted(String arg0, View arg1) {

                //开始加载

            }

 

            @Override

            public void onLoadingFailed(String arg0, View arg1,

                    FailReason arg2) {

                //加载失败

            }

 

            @Override

            public void onLoadingComplete(String arg0, View arg1,

                    Bitmap arg2) {

                //加载成功

            }

 

            @Override

            public void onLoadingCancelled(String arg0, View arg1) {

                //加载取消

            }

        }, new ImageLoadingProgressListener() {

 

            @Override

            public void onProgressUpdate(String imageUri, View view,

                    int current, int total) {

                //加载进度

            }

        });

注意事项

1、如果你经常出现oom,你可以尝试:

1)禁用在内存中缓存cacheInMemory(false),如果oom仍然发生那么似乎你的应用程序有内存泄漏,使用MemoryAnalyzer来检测它。否则尝试以下步骤(尝试所有或几个)

2)减少配置的线程池的大小(.threadPoolSize(...)),建议1~5

3)在显示选项中使用 .bitmapConfig(Bitmap.Config.RGB_565) . RGB_565模式消耗的内存比ARGB_8888模式少两倍.

4)配置中使用.diskCacheExtraOptions(480, 320, null)

5)配置中使用 .memoryCache(newWeakMemoryCache()) 或者完全禁用在内存中缓存(don't call .cacheInMemory()).

6)在显示选项中使用.imageScaleType(ImageScaleType.EXACTLY) 或 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)

7)避免使用 RoundedBitmapDisplayer. 调用的时候它使用ARGB-8888模式创建了一个新的Bitmap对象来显示,对于内存缓存模式 (ImageLoaderConfiguration.memoryCache(...)) 你可以使用已经实现好的方法.

2、ImageLoader是根据ImageView的height,width确定图片的宽高

3、一定要对ImageLoaderConfiguration进行初始化,否则会报错

4、开启缓存后默认会缓存到外置SD卡如下地址(/sdcard/Android/data/[package_name]/cache).如果外置SD卡不存在,会缓存到手机. 缓存到Sd卡需要在AndroidManifest.xml文件中进行如下配置

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

内存缓存模式可以使用以下已实现的方法 (ImageLoaderConfiguration.memoryCache(...))

1)缓存只使用强引用

LruMemoryCache (缓存大小超过指定值时,删除最近最少使用的bitmap) --默认情况下使用

2)缓存使用弱引用和强引用

 

?

1

2

3

4

5

UsingFreqLimitedMemoryCache (缓存大小超过指定值时,删除最少使的bitmap)

LRULimitedMemoryCache (缓存大小超过指定值时,删除最近最少使用的<span helvetica="" segoe="" style="font-family:">bitmap) --默认值</span>

FIFOLimitedMemoryCache (缓存大小超过指定值时,按先进先出规则删除的<span helvetica="" segoe="" style="font-family:">bitmap)</span>

LargestLimitedMemoryCache (缓存大小超过指定值时,删除最大的bitmap)

LimitedAgeMemoryCache (缓存对象超过定义的时间后删除)

3)缓存使用弱引用

WeakMemoryCache(没有限制缓存)

6、本地缓存模式可以使用以下已实现的方法 (ImageLoaderConfiguration.diskCache(...))

 

 

?

1

2

3

4

UnlimitedDiskCache   不限制缓存大小(默认)

TotalSizeLimitedDiskCache (设置总缓存大小,超过时删除最久之前的缓存)

FileCountLimitedDiskCache (设置总缓存文件数量,当到达警戒值时,删除最久之前的缓存。如果文件的大小都一样的时候,可以使用该模式)

LimitedAgeDiskCache (不限制缓存大小,但是设置缓存时间,到期后删除)

 

 

 

 

你可能感兴趣的:(universalimageloader相关)