博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记--universal_image_loader图片加载框架
阅读量:6713 次
发布时间:2019-06-25

本文共 10441 字,大约阅读时间需要 34 分钟。

昨天学习了universal_image_loader图片加载框架,今天把所学的和大家分享一下,

首先需要新建一个APP文件继承与Application

代码如下

1 package com.wuxianedu.auniversalimageloader;  2   3 import android.app.Application;  4 import android.graphics.Bitmap;  5 import android.os.Handler;  6 import android.util.Log;  7   8 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;  9 import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; 10 import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; 11 import com.nostra13.universalimageloader.core.DisplayImageOptions; 12 import com.nostra13.universalimageloader.core.ImageLoader; 13 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; 14 import com.nostra13.universalimageloader.core.assist.ImageScaleType; 15 import com.nostra13.universalimageloader.core.assist.QueueProcessingType; 16 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; 17 import com.nostra13.universalimageloader.core.download.BaseImageDownloader; 18 import com.nostra13.universalimageloader.utils.StorageUtils; 19  20 import java.io.File; 21  22 /** 23  * Created by terry-song on 2016/10/7. 24  * 25  * 使用universal-imageloader 26  * 1.引入 27  * 2.初始化ImageLoader 28  * 3.调用方法加载图片 29  */ 30  31 public class App extends Application { 32  33     private static final String TAG = "--Main--"; 34  35     @Override 36     public void onCreate() { 37         super.onCreate(); 38  39 //        createDefaultImageLoaderConfiguration(); 40  41             DisplayImageOptions options = new DisplayImageOptions.Builder() 42                     .showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片 43                     .showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片 44                     .showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片 45                     .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位 46                     .delayBeforeLoading(200)  // 下载前的延迟时间 47                     .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中 48                     .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中 49                     .considerExifParams(false) // default 50                     .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示 51                     .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型 52                     //                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20) 53                     .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间 54                     //.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片 55                     .handler(new Handler()) // default 56                     .build(); 57  58             //设置图片缓存路径 59             File cacheDir = StorageUtils.getCacheDirectory(this); 60  61             Log.e(TAG, "onCreate: cacheDir===="+cacheDir ); 62             //自定义ImageLoaderConfiguration配置 63             ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) 64                     .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高 65     //                .diskCacheExtraOptions(480, 800, null)  // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个 66                     .threadPoolSize(4) // default  线程池内加载的数量 67     //                .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级 68                     .tasksProcessingOrder(QueueProcessingType.FIFO) // default 69                     .denyCacheImageMultipleSizesInMemory() 70                     .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 71                     .memoryCacheSize(2 * 1024 * 1024)  // 内存缓存的最大值 72                     .memoryCacheSizePercentage(13) // default 73                     //可以自定义缓存路径 74                     .diskCache(new UnlimitedDiskCache(cacheDir)) 75                     .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值 76     //                .diskCacheFileCount(100)  // 可以缓存的文件数量 77                     // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 78                     .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) 79     //                 .connectTimeout (5 s), readTimeout (30 s)  //超时时间 80                     //第二个参数:连接超时时间,第三个参数:读取超时时间 81                     .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) 82                     .defaultDisplayImageOptions(options) 83                     .writeDebugLogs() // 打印debug log 84                     .build(); //开始构建 85  86             //初始化ImageLoader 87             ImageLoader.getInstance().init(configuration); 88  89     } 90  91     /** 92      * 创建默认的ImageLoaderConfiguration 93      * 对ImageLoader进行初始化 94      */             //默认的初始化方法,上面那些事自定义的 95     private void createDefaultImageLoaderConfiguration() { 96         //创建默认的ImageLoaderConfiguration 97         ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this); 98         //初始化ImageLoader 99         ImageLoader.getInstance().init(configuration);100     }101 }

之后新建一个Java文件

WXHKdemo.java

1 package com.wuxianedu.auniversalimageloader; 2  3 import android.graphics.Bitmap; 4 import android.os.Handler; 5 import android.widget.ImageView; 6  7 import com.nostra13.universalimageloader.core.DisplayImageOptions; 8 import com.nostra13.universalimageloader.core.ImageLoader; 9 import com.nostra13.universalimageloader.core.assist.ImageScaleType;10 import com.nostra13.universalimageloader.core.assist.ImageSize;11 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;12 import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;13 14 /**15  * Created by Administrator on 2016/10/7.16  */17 public class WXHKdemo {18     private static WXHKdemo wxhlImageLoader;19     //获取第三方的ImageLoader20     private ImageLoader imageLoader;21     //初始化实例22     private WXHKdemo(){23         //new出来一个实例,来让下面调用不出现空指针,24         imageLoader = ImageLoader.getInstance();25     }26 27     /**28      * 单例29      * @return30      */31     public static synchronized WXHKdemo getInstance(){32 //        return wxhlImageLoader;33         if(wxhlImageLoader == null){34             wxhlImageLoader = new WXHKdemo();35         }36         return wxhlImageLoader;37 38 39     }40     private DisplayImageOptions options = new DisplayImageOptions.Builder()41             .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片42             .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片43             .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片44             .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位45             .delayBeforeLoading(200)  // 下载前的延迟时间46             .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中47             .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中48             .considerExifParams(false) // default49             .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示50             .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型51 //                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)52             .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间53 //                .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片54             .handler(new Handler()) // default55             .build();56     /**57      * 显示图片58      * @param url59      * @param imageView60      */61     public void displayHeaderImage(String url, ImageView imageView){62         imageLoader.displayImage(url,imageView,options);63     }64 65     /**66      * 显示图片,带监听器67      *68      * @param imageView 组件69      *70      */71     public void displayImage(String imageUrl, ImageView imageView){72         imageLoader.displayImage(imageUrl,imageView);73     }74 75     /**76      * 加载图片,带监听器77      * @param url78      * @param imagelo79      */80     public void loadImage (String url,SimpleImageLoadingListener imagelo){81         imageLoader.loadImage(url,imagelo);82     }83 84 85     public void loadImage(String url,int gao,int kuan,SimpleImageLoadingListener imagelo){86         ImageSize imageSize = new ImageSize(gao,kuan);87         imageLoader.loadImage(url,imageSize,imagelo);88     }89 90 }

 

调用方法

1 package com.wuxianedu.auniversalimageloader; 2  3 import android.content.Context; 4 import android.view.LayoutInflater; 5 import android.view.View; 6 import android.view.ViewGroup; 7 import android.widget.BaseAdapter; 8 import android.widget.ImageView; 9 10 /**11  * Created by terry-song on 2016/9/29.12  */13 14 public class ImageAdapter extends BaseAdapter {15 16     private final WXHKdemo wxhlImageLoader;17     private Context context;18     private String[] imageUrls;19 20     public ImageAdapter(Context context, String[] imageUrls) {21         this.context = context;22         this.imageUrls = imageUrls;23         wxhlImageLoader = WXHKdemo.getInstance();24     }25 26     @Override27     public int getCount() {28         return imageUrls.length;29     }30 31     @Override32     public String getItem(int position) {33         return imageUrls[position];34     }35 36     @Override37     public long getItemId(int position) {38         return position;39     }40 41     @Override42     public View getView(int position, View convertView, ViewGroup parent) {43         ViewHolder viewHolder;44         if(convertView == null){45             viewHolder = new ViewHolder();46             convertView = LayoutInflater.from(context).inflate(R.layout.item_view,null);47             viewHolder.imageView = (ImageView) convertView.findViewById(R.id.iv_id);48             convertView.setTag(viewHolder);49         }else{50             viewHolder = (ViewHolder) convertView.getTag();51         }52         ImageView imageView = viewHolder.imageView;53 54         // TODO: 2016/9/29  设置图片55         if(position %2 == 0){56             //使用之前WXHKdemo里面的方法57             wxhlImageLoader.displayImage(imageUrls[position],imageView);58         }else{59             //使用之前WXHKdemo里面的方法60             wxhlImageLoader.displayHeaderImage(imageUrls[position],imageView);61         }62 63 64         return convertView;65     }66 67     class ViewHolder {68         ImageView imageView;69     }70 }

写的有点乱,以后在整理

转载于:https://www.cnblogs.com/langfei8818/p/5943897.html

你可能感兴趣的文章
python开发工具
查看>>
Home Assistant系列 -- 自动语音播报天气
查看>>
Hyberledger-Fabric 1.00 RPC学习(1)
查看>>
SDNU 1450.报时助手
查看>>
BZOJ 4144 Dijkstra+Kruskal+倍增LCA
查看>>
阻塞与非阻塞,同步与异步
查看>>
HTML段落自动换行的样式设置
查看>>
Android实现左右滑动指引效果
查看>>
html里frame导航框架实现方法
查看>>
shell编程系列5--数学运算
查看>>
在 UWP 应用中创建、使用、调试 App Service (应用服务)
查看>>
Active MQ C#实现
查看>>
C#实现秒表程序
查看>>
P4377 [USACO18OPEN]Talent Show
查看>>
多线程 售票 (同步)
查看>>
cJSON 使用笔记
查看>>
CF1163E Magical Permutation
查看>>
指针与数组区别
查看>>
showModalDialog关闭子窗口,并刷新父窗口
查看>>
我的Java开发学习之旅------>解惑Java进行三目运算时的自动类型转换
查看>>