`
vase
  • 浏览: 422229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UniversalImageloader 加载图片模糊问题的解决办法

阅读更多

前因后果不废话了,直接总结了:

UniversalImageloader请求加载的图片,在动态高度情况下会有模糊情况发生。经自己测试和网上翻阅资料,解决方式有三:

1. 若设置了默认高度(非WRAP_CONTENT、MATCH_PARENT),想在图片加载后动态高度,在请求图片前能提前知道图片高度的情况下(看api设计),可以在调用displayImage前先调整imageView的LayoutParams.height。因为Imageloader在请求到图片后,会参考imageView宽高(道听途说,没看代码)

2. 在调用的displayImage方法中增加回调ImageLoadingListener,在加载完成后调整imageView高度

ImageLoader.getInstance().displayImage(imgUrl, imageView, App.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 bitmap) {
        LayoutParams params = productImage.getLayoutParams();
        params.height = (int)(ScreenUtils.WIDTH / bitmap.getWidth() * bitmap.getHeight());
    }

    @Override
    public void onLoadingCancelled(String arg0, View arg1) {}
});

 3. 框架作者给的解决方法,通过imageView.post()去调用displayImage

imageView.post(new Runnable(){
    @Override
    public void run(){
        ImageLoader.getInstance().displayImage(imgUrl, imageView, App.options);
    }
});

 

具体用哪种,看个人喜好吧。

 

如果通过以上任意一种方式后,图片看上去比原图还是模糊,别乱找了,肯定options设置问题。

options = new DisplayImageOptions.Builder()
        ...
        .cacheInMemory(true)	//设置下载的图片是否缓存在内存中 
	.cacheOnDisk(true)	//设置下载的图片是否缓存在SD卡中  
	.considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)
        .imageScaleType(ImageScaleType.EXACTLY)//设置图片以如何的编码方式显示  
        .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//
        ...

 如果你也是网上扒来的例子,十有八九是上边这样,问题就出在红色字体那行设置图片解码器上,查查资料就会发现,RGB_565是把图像压缩了的,如果你的图片本身有渐变色,用这个解码器解出来的图片看上会有尿布晾干那种痕迹;不过图片质量高的情况下问题不大。我们看下解释:

ALPHA_8 代表8位Alpha位图
ARGB_4444 代表16位ARGB位图,由4个4位组成
ARGB_8888 代表32位ARGB位图,由4个8位组成
RGB_565 代表16位RGB位图,R为5位,G为6位,B为5位

 

既然问题找到,直接换ARGB_8888 真彩色,效果就是原图那样了。

 

分享到:
评论

相关推荐

    开源项目UniversalImageLoader实现加载网络图片

    作为开源项目,UniversalImageLoader有活跃的社区支持,遇到问题可以参考其他开发者的经验和解决方案,或者直接参与讨论和贡献代码。 在实际开发中,你可以通过以下步骤使用UniversalImageLoader: 1. 引入依赖库...

    Android-UniversalImageLoader加载本地图片

    "Android-UniversalImageLoader加载本地图片"是针对这个问题的一个解决方案。Universal Image Loader(UIL)是一个强大的开源库,用于在Android应用中高效、异步地加载、缓存和显示网络及本地图片。 Universal ...

    UniversalImageLoader

    这个库旨在解决在Android应用中处理大量图片时可能出现的性能问题,如内存溢出(OOM)和UI线程阻塞。它提供了异步加载、内存和硬盘缓存、错误处理等功能,使得开发者能够更加轻松地管理和显示图片。 1. **异步加载*...

    利用Universal-Image-Loader加载网络图片。只有加载网络的

    首先,Universal-Image-Loader支持异步加载图片,这意味着在用户界面线程之外执行加载操作,避免了可能导致应用无响应(ANR)的问题。它通过在后台线程下载图片并在主线程中显示,确保了用户体验的流畅性。 其次,...

    UniversalImageLoader加密图片

    在加载图片时,UML会调用我们自定义的解码器,我们在解码器中解密这些数据,再将其转换为Bitmap对象,供UI展示。 除了加密,我们还需要考虑磁盘缓存的清理策略。为了防止敏感数据长期留存,我们可以设置定期清理...

    通用适配器+Gson+Volley+UniversalImageLOader下载图片的Demo

    它可以实现图片的异步加载,防止因加载图片导致的卡顿现象。UniversalImageLoader支持多种缓存策略,包括内存缓存和磁盘缓存,能够在低内存情况下优雅地处理图片。此外,它还提供了丰富的图片加载、显示配置选项,...

    android 获取网络图片(universalImageLoader 测试工程)

    `UniversalImageLoader`库通过延迟加载和缓存机制解决了这个问题,当ListView项可见时才加载图片,提高了用户体验。 描述中还提到“listview 为圆形image图片”,这表明项目中可能包含了将图片转换为圆形的代码。在...

    安卓图片加载缓存相关-universalimageloader实现https加载图片带证书证书格式为BKS可以不带证书的不认证统统连接进来.rar

    universal_image_loader实现https加载图片带证书 ,证书格式为BKS,可以不带证书的不认证统统连接进来.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    universalimageloader小试牛刀

    UniversalImageLoader是一个在Android开发中常用的图片加载库,它的出现旨在解决Android应用中图片加载、缓存、显示等问题。这个库由Sergey Tarasevich开发,它提供了强大的功能和灵活的配置选项,能够有效地处理...

    UniversialImageLoader异步加载图片源代码

    总之,`UniversalImageLoader`提供了丰富的功能和高度的定制性,是解决Android应用中图片异步加载问题的一个可靠选择。开发者可以根据具体需求,灵活配置和使用这个库,以提升应用的用户体验。通过深入理解其工作...

    Android-universalimageloader的使用

    它支持异步加载、缓存策略(内存和磁盘)、图片占位符和错误图片、图片尺寸调整等功能,有效解决了Android应用中常见的图片加载问题。 2. **配置初始化** 使用前需要进行初始化配置,这包括创建配置器`...

    使用ImageLoader图片加载框架加载一张网络图片

    现在我们已经准备好了加载图片的所有必要组件。在需要显示网络图片的地方,使用`ImageLoader`的`displayImage()`方法: ```java String imageUrl = "http://example.com/image.jpg"; ImageView imageView = ...

    Android-Universal-Image-Loader 图片异步加载类库的使用

    为此,开发者社区提供了一些优秀的库来解决这个问题,其中Android-Universal-Image-Loader(简称UIL)就是一款广泛应用的开源库。这个库允许开发者进行异步图片加载,缓存管理,以及错误处理,极大地提高了用户体验...

    使用Universal-Image-Loader加载系统图片并放大显示

    在`FullScreenImageActivity`中,我们可以创建一个更大的ImageView,并使用相同的方法加载图片,但这次可能需要调整图片的显示比例,以适应全屏显示: ```java Intent intent = getIntent(); String imageUrl = ...

    Universalimageloader

    Universalimageloader开源框架实现listview中图片的加载demo,结合blog:http://blog.csdn.net/u014733374/article/details/46603541可以掌握Universalimageloader的用法

    Android加载网络图片缓存处理库的使用-Universal-ImageLoader

    接下来,我们就可以在Activity或Fragment中使用ImageLoader加载图片了。假设我们有一个ImageView控件,其id为`R.id.imageView`,我们可以这样加载网络图片: ```java String imageUrl = ...

    Android---universal-image-loader应用 异步加载图片并缓存

    在Android开发中,异步加载图片并进行缓存是一个常见的需求,特别是在开发涉及大量图片展示的应用时,如社交网络、电商应用等。`Universal Image Loader`(UIML)是一个强大的开源库,专为了解决这个问题而设计。它...

    UniversalImageLoader加Volley.zip

    在Android应用开发中,图片加载是一项重要的任务,尤其对于新闻、社交等需要频繁展示图片的应用来说,如何高效、流畅地加载图片至关重要。本教程将详细介绍如何在项目中集成Universal Image Loader库(简称UIL)与...

Global site tag (gtag.js) - Google Analytics