您的位置:首页 > 移动开发 > Android开发

Android 开源框架Universal-Image-Loader的配置

2017-05-06 18:07 363 查看
在使用这个框架的时候,我们必须要配置一个DisplayImageOptions对象来作为ImageLoader.getInstance().displayImage()中的参数,所以很有必要讲解这个对象的配制方法。讲解完了后其实这个框架我们就会了解的比较详尽了。

 

1.默认的配置

 

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
.cacheOnDisk(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();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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

    .cacheOnDisk(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();

 

 

 

example:

 

/**
* 显示图片的所有配置
* @return
*/
private DisplayImageOptions getWholeOptions() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.loading) //设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.error) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
//.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置
.delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间
//设置图片加入缓存前,对bitmap进行设置
//.preProcessor(BitmapProcessor preProcessor)
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少
.displayer(new FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动
.build();//构建完成

return options;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

    /**

     * 显示图片的所有配置
     * @return

     */
    private
DisplayImageOptions getWholeOptions()
{

        DisplayImageOptions
options =
new DisplayImageOptions.Builder()  
        .showImageOnLoading(R.drawable.loading)
//设置图片在下载期间显示的图片  

        .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片  
        .showImageOnFail(R.drawable.error)  //设置图片加载/解码过程中错误时候显示的图片

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

        .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示  

        .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
        //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置  

        .delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间
        //设置图片加入缓存前,对bitmap进行设置  

        //.preProcessor(BitmapProcessor preProcessor)  
        .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位  

        .displayer(new
RoundedBitmapDisplayer(20))//不推荐用!!!!是否设置为圆角,弧度为多少  
        .displayer(new
FadeInBitmapDisplayer(100))//是否图片加载好后渐入的动画时间,可能会出现闪动

        .build();//构建完成
        

        return
options;
    }

 

 

 

2.一般常用的配置

 

/**
* 设置常用的设置项
* @return
*/
private DisplayImageOptions getSimpleOptions() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.loading) //设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.error) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
.build();//构建完成
return options;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

    /**

     * 设置常用的设置项
     * @return

     */
    private
DisplayImageOptions getSimpleOptions()
{

        DisplayImageOptions
options =
new DisplayImageOptions.Builder()  
        .showImageOnLoading(R.drawable.loading)
//设置图片在下载期间显示的图片  

        .showImageForEmptyUri(R.drawable.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片  
        .showImageOnFail(R.drawable.error)  //设置图片加载/解码过程中错误时候显示的图片

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

        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示  
        .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型

        .build();//构建完成
        return
options;

    }

 

 

 

注意:这里面的参数当然也是可以随意修改的,根据项目需要再定!

 

 

 

几点说明:

 

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

 

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)

1

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)

 

其中,mageScaleType的选择值:

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

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

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

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

NONE:图片不会调整

 

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

 

.displayer(new FadeInBitmapDisplayer(100))

1

.displayer(new
FadeInBitmapDisplayer(100))

 

其中,displayer的选择值:

 

RoundedBitmapDisplayer(int roundPixels)设置圆角图片,不推荐!!!

FakeBitmapDisplayer()这个类什么都没做

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

SimpleBitmapDisplayer()正常显示一张图片

 

 

 

3.避免OOM

 

.bitmapConfig(Bitmap.Config.RGB_565) //默认是ARGB_8888,使用RGB_565会比使用ARGB_8888少消耗2倍的内

 

使用.imageScaleType(ImageScaleType.IN_SAMPLE_INT) 或imageScaleType(ImageScaleType.EXACTLY)

 

避免使用.displayer(new RoundedBitmapDisplayer(20)) //他会创建新的ARGB_8888格式的Bitmap对象;

 

 

 

Activity代码:

 

 

 

参考自:

 

http://blog.csdn.net/xiaanming/article/details/26810303

 

http://blog.csdn.net/vipzjyno1/article/details/23206387
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐