古老的图片加载框架-----ImageLoader

来源:互联网 发布:自动上色软件 编辑:程序博客网 时间:2024/04/29 21:22

相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架,今天这篇文章就是对这个框架的基本介绍以及使用,主要是帮助那些没有使用过这个框架的朋友们。

//废话不多说直接上代码/** *  这是一个封装好的工具类   大家可以参考 */ public class ImageLoaderUilts {    public static ImageLoaderConfiguration getImageLoader(Context context) {        File cacheDir = StorageUtils.getCacheDirectory(context);        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)                // 设置内存图片的宽高                .memoryCacheExtraOptions(50, 50)                // default = device screen dimensions                // 缓存到磁盘中的图片宽高                .diskCacheExtraOptions(50, 50, null)                // .taskExecutor(null)                // .taskExecutorForCachedImages()                .threadPoolSize(3)                // default 线程优先级                .threadPriority(Thread.NORM_PRIORITY - 2)                //加载同一URL图片时,imageView从小变大时,从内存缓存中加载                .denyCacheImageMultipleSizesInMemory()                // 内存的一个大小                .memoryCacheSize(2 * 1024 * 1024)                .memoryCacheSizePercentage(13)                // default 将图片信息缓存到该路径下                // .diskCache(new UnlimitedDiskCache(cacheDir))                // default 磁盘缓存的大小                .diskCacheSize(50 * 1024 * 1024)                // 磁盘缓存文件的个数                .diskCacheFileCount(100)                //磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new Md5FileNameGenerator()源文件的名称同过md5加密后保存                .writeDebugLogs().build();        return config;    }    public static DisplayImageOptions getOptions (){        DisplayImageOptions options = new DisplayImageOptions.Builder()                // 设置图片在下载期间显示的图片                .showImageOnLoading(R.drawable.ic_launcher)                // 设置图片Uri为空或是错误的时候显示的图片                .showImageForEmptyUri(R.drawable.ic_launcher)                // 设置图片加载/解码过程中错误时候显示的图片                .showImageOnFail(R.drawable.ic_launcher)                // 设置下载的图片是否缓存在内存中                .cacheInMemory(true)                // 设置下载的图片是否缓存在SD卡中                .cacheOnDisc(true)                // 是否考虑JPEG图像EXIF参数(旋转,翻转)                .considerExifParams(true)                //圆角                //.displayer(new RoundedBitmapDisplayer(100))                // 设置图片以如何的编码方式显示                //.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)                // 设置图片的解码类型//                //.bitmapConfig(Bitmap.Config.RGB_565)                // 设置图片的解码配置                // .decodingOptions(options)                // .delayBeforeLoading(int delayInMillis)//int                // delayInMillis为你设置的下载前的延迟时间                // 设置图片加入缓存前,对bitmap进行设置                // .preProcessor(BitmapProcessor preProcessor)                // 设置图片在下载前是否重置,复位                .resetViewBeforeLoading(true)                .build();        return options;    }

注意一下几点

 /**  * 新建一个MyApplication继承Application,并在onCreate()中创建ImageLoader的配置参数,并初始化到ImageLoader中代码如下  */public class MyApplication extends Application {      @Override      public void onCreate() {          super.onCreate();          //创建默认的ImageLoader配置参数          ImageLoaderConfiguration imageLoader = ImageLoaderUilts.getImageLoader(this);        ImageLoader.getInstance().init(imageLoader);    }  } 接着在配置Android Manifest文件配置    <manifest>          <application android:name="MyApplication">              ...          </application>      </manifest>  /** *  加载图片设置 */ DisplayImageOptions options = ImageLoaderUilts.getOptions(); ImageLoader.getInstance().displayImage(资源路径, 控件, 设置);轻松解决