`
Abel_Chen_
  • 浏览: 17746 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用ImageLoader实现图片异步加载

 
阅读更多

我们在加载大量的网络图片的时候,采用的方式不妥当的时候,经常会出现内存溢出的现象,导致程序崩溃,还有加载图片速度慢等一些问题。ImageLoader图片加载核心类,内部使用线程池加载图片灵活更改ImageLoader的基本配置,包括最大线程数、缓存方式、图片显示选项等;图片异步加载缓存机制,包括内存缓存(软引用)及本地缓存;对加载过程实现监听和事件处理;能够配置加载图片的显示选项,包括图片圆角处理和加载完成显示动画等好处可以基本上解决以上问题!

1.官方网站下载最新的包,universal-image-loader-1.8.4.jar加入到你项目的libs里面,注意引入项目,点击你的项目,右键——选择build path——configure build path——add jars,选择你项目下面libs里面的包。
 
2.配置Manifest文件,因为要进行网络请求和本地缓存,添加网络请求和访问外部存储的权限
 
<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
 
3.
public class MyApplication extends Application {

    @Override

    public void onCreate() {

        super.onCreate();

//没有緩存的配置:

ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(getApplicationContext())

                .threadPriority(Thread.NORM_PRIORITY - 2)

                .denyCacheImageMultipleSizesInMemory()

                .discCacheFileNameGenerator(new Md5FileNameGenerator())

                .tasksProcessingOrder(QueueProcessingType.LIFO)

                .enableLogging() // Not necessary in common   

                .build();

 

//有緩存的配置:

DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()

            .cacheInMemory()  

            .cacheOnDisc()    

            .build();

         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

            .defaultDisplayImageOptions(defaultOptions)

            .threadPriority(Thread.NORM_PRIORITY - 2)

            .denyCacheImageMultipleSizesInMemory()

            .discCacheFileNameGenerator(new Md5FileNameGenerator())

            .tasksProcessingOrder(QueueProcessingType.LIFO)

            .enableLogging()

            .build();

 

        ImageLoader.getInstance().init(config);

}

}

配置完成后,我们就可以在任何想用它的地方使用了。具体使用如下:

1.   ImageLoader.getInstance().displayImage(url, ImageView); 

2.   DisplayImageOptions  options = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.ic_stub)             //加载开始默认的图片      
            .showImageForEmptyUri(R.drawable.ic_empty)     //url爲空會显示drawable里面的图片
            .showImageOnFail(R.drawable.ic_error)          //加载图片出现问题,会显示此图片
            .cacheInMemory()                               //缓存用
            .cacheOnDisc()                                 //缓存用

        .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 

 

        .bitmapConfig(Bitmap.Config.RGB_565)           // 防止内存溢出的,图片太多用这个

        .displayer(new RoundedBitmapDisplayer(5))      //图片圆角显示,值为整数
            .build();

      ImageLoader.getInstance().displayImage(url, imageView,options); 

3.ImageLoader.getInstance().loadImage(url,new SimpleImageLoadingListener(){
          public void onLoadingComplete(String imageUri, android.view.View view,               android.graphics.Bitmap loadedImage) {
           imageView.setImageBitmap(loadedImage);          //imageview控件对象
        };


         public void onLoadingFailed(String imageUri, android.view.View view, com.nostra13.universalimageloader.core.assist.FailReason failReason) {
          Toast.makeText(ShowOneImage.this,"加载失败", Toast.LENGTH_LONG).show();
        };
        @Override
        public void onLoadingStarted(String imageUri, View view) {
            
        }
        @Override
        public void onLoadingCancelled(String imageUri, View view) {


        }
});

 

参考文档:http://my.oschina.net/u/1858156/blog/338854

 

0
0
分享到:
评论

相关推荐

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

    在实际项目中,你可能还需要处理一些其他情况,比如图片加载失败后的重试、进度显示、异步加载监听等。ImageLoader提供了丰富的API来支持这些功能,例如`ImageLoadingListener`可以监听加载进度和结果: ```java ...

    图片异步加载,照片墙,异步加载listview图片2

    "Android-Universal-Image-Loader-master"是一个流行的开源库,用于实现图片异步加载。它提供了一套完整的解决方案,包括缓存策略、图片占位符、加载失败图以及多种图片显示选项。 4. 图片加载流程: - 初始化...

    使用ImageLoader进行图片加载

    它提供了高效的图片缓存机制,能够有效地减少内存消耗,并支持异步加载、图片缩放等功能。在实际应用中,ImageLoader通过将图片缓存在内存和磁盘中,能够在用户滚动列表时快速显示图片,同时避免重复下载。 首先,...

    dotnet-UnityImageLoader用于Unity中的图片异步显示加载库

    Unity-ImageLoader是一款专为Unity游戏引擎设计的图片异步加载库,主要目的是优化游戏性能,提高用户体验。在Unity中,直接加载大图或者大量的图片可能会导致应用卡顿,因此异步加载技术变得尤为重要。这款库是基于...

    ImageLoader异步加载实例

    在Android应用开发中,高效地处理...总的来说,ImageLoader异步加载实例展示了如何利用这个强大的工具来优化Android应用的图片加载,提升用户体验。理解并熟练运用这些技术,对于任何Android开发者来说都是至关重要的。

    Android-ImageLoader具有某些新特性的图片加载框架

    总的来说,ImageLoader作为一款成熟的Android图片加载框架,其异步加载、缓存机制、图片处理和丰富的配置选项等特性,使得它在处理图片显示问题时表现优异。对于希望提升应用性能和用户体验的开发者来说,理解和掌握...

    ImageLoader安卓异步加载图片开源工具类

    图片异步加载缓存机制,包括内存缓存(软引用)及本地缓存; 对加载过程实现监听和事件处理; 能够配置加载图片的显示选项,包括图片圆角处理和加载完成显示动画等; 最近自己测试过,没有问题,其实也就是GIT上的...

    ImageLoader加载网络图片

    1. **异步加载**:ImageLoader支持在后台线程加载图片,避免阻塞UI,使得用户界面保持流畅。 2. **内存缓存**:加载过的图片会被存储在内存缓存中,当再次需要时,可以从内存中快速获取,提高加载速度。 3. **磁盘...

    图片异步加载

    4. **源码分析**:Demo中的"ImageLoader"可能包含了实现异步加载的具体代码。分析源码可以帮助我们理解图片加载库如Glide、Picasso等的工作原理,包括网络请求、缓存策略、线程池管理、图片解码等方面。 5. **内存...

    Android 基于ImageLoader的图片选择器

    ImageLoader是一个流行的Android库,主要用于异步加载网络或者本地资源的图片。它的核心功能包括:图片缓存机制(内存缓存和磁盘缓存),线程管理,以及错误处理等。使用ImageLoader可以极大地提高图片加载的性能,...

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

    **Android-Universal-Image-Loader 图片异步加载库详解** 在Android开发中,图片的加载和显示是一项常见的任务,特别是在处理大量图片或者网络图片时,如何高效、流畅地加载和展示图片至关重要。为此,开发者社区...

    Android图片异步加载-ListView、GridView、ViewPager

    Android-Universal-Image-Loader(UIL)就是一个广泛使用的开源库,它提供了强大的图片异步加载和缓存功能。 首先,我们来了解Android-Universal-Image-Loader的基本原理。这个库主要由三部分组成:ImageLoader配置...

    网络异步加载图片的轮播图带点击方法

    在IT行业中,网络异步加载图片的轮播图是一种常见的用户界面组件,广泛应用于网站、APP等场景,用于展示多张图片并实现自动或手动切换。在这个特定的【标题】"网络异步加载图片的轮播图带点击方法"中,我们可以深入...

    Retrofit简单使用+ImageLoader图片加载

    本文将深入探讨Retrofit的基本使用方法以及如何结合ImageLoader进行图片加载。 首先,Retrofit的核心概念是接口定义。在Android应用中,我们通过创建一个接口来声明所有的网络请求方法,如GET、POST等。例如: ```...

    ListView异步加载图片

    在Android开发中,ListView是一种常用的UI控件,用于展示大量数据列表。然而,当列表项包含图片时,如果直接在主线程中加载,可能会导致应用性能...这些技巧与异步加载图片配合使用,能显著提升ListView的用户体验。

    异步加载的3d图片效果

    此外,考虑到可能的实现细节,开发人员可能会利用Android的RecyclerView或者PagerAdapter等组件来实现图片列表的滑动效果,这些组件可以很好地配合异步加载策略,只渲染当前屏幕内的元素,节省系统资源。 在项目...

    android异步加载图片

    "Android异步加载图片"是一个常见的需求,它涉及到用户体验优化、内存管理以及线程安全等多个方面。这里我们将深入探讨这个主题,并结合提供的"ImageLoader-develop"可能是一个图片加载库的源码,来讲解相关的知识点...

    xamarin异步加载并缓存图片库

    在Xamarin中实现异步加载和缓存图片,通常会使用第三方库,如FFImageLoading或Acr.UserDialogs。这些库提供了强大的功能,包括但不限于: 1. **异步加载**:异步加载图片意味着在不阻塞主线程的情况下下载和处理...

Global site tag (gtag.js) - Google Analytics