Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置

来源:互联网 发布:淘宝店怎么找人刷销量 编辑:程序博客网 时间:2024/04/29 09:49

文章转自http://www.myext.cn/other/a_26932.html

在使用这个框架的时候,我们必须要配置一个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();


 


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;    }


 


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).imageScaleType(ImageScaleType imageScaleType)  //设置图片的缩放方式,如:


.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))

其中,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对象;


 调用denyCacheImageMultipleSizesInMemory()强制UIL在内存中不能存储内容相同但大小不同的图像。由于完整大小的图片会存储在磁盘缓存中,后面当图片加载进入内存,他们就会缩小到ImageView的大小(图片要显示的尺寸),然而在某些情况下,相同的图像第一次显示在一个小的View中,然后又需要在一个大的View中显示。同时,两个不同大小的相同内容的图片就会被将被存储在内存中。这是默认的操作。denyCacheImageMultipleSizesInMemory()指令确保删除前一个加载的图像缓存的内存的大小


Activity代码:


 


参考自:


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


http://blog.csdn.net/vipzjyno1/article/details/23206387

0 0
原创粉丝点击