首页 > 代码库 > 第三方的图片加载( Android-Universal-Image-Loader)
第三方的图片加载( Android-Universal-Image-Loader)
Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。
(1).使用多线程加载图片
(2).灵活配置ImageLoader的基本参数,包括线程数、缓存方式、图片显示选项等;
(3).图片异步加载缓存机制,包括内存缓存及SDCard缓存;
(4).采用监听器监听图片加载过程及相应事件的处理;
(5).配置加载的图片显示选项,比如图片的圆角处理及渐变动画。
//第一种方法是去网上下载
地址:https://github.com/nostra13/Android-Universal-Image-Loader
//第二种就是可以依赖
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.3‘
1 要应用就要先建一个App类 继承Application 两种加载 2 3 public class App extends Application { 4 @Override 5 public void onCreate() { 6 super.onCreate(); 7 8 //第一种是创建默认的加载 9 10 //创建默认的ImageLoaderConfiguration11 ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(this);12 //初始化ImageLoader13 ImageLoader.getInstance().init(configuration);14 15 //第二种是自定义加载16 //自定义加载第三方图片样式17 DisplayImageOptions options = new DisplayImageOptions.Builder()18 .showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片19 .showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片20 .showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片21 .resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位22 .delayBeforeLoading(200) // 下载前的延迟时间23 .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中24 .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中25 .considerExifParams(false) // default26 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示27 .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型28 // .displayer(new SimpleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20)29 .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间30 // .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片31 .handler(new Handler()) // default32 .build();33 34 //设置图片缓存路径35 File cacheDir = StorageUtils.getCacheDirectory(this);36 //自定义ImageLoaderConfiguration配置37 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)38 .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高39 // .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个40 .threadPoolSize(4) // default 线程池内加载的数量41 // .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级42 .tasksProcessingOrder(QueueProcessingType.FIFO) // default43 .denyCacheImageMultipleSizesInMemory()44 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现45 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值46 .memoryCacheSizePercentage(13) // default47 //可以自定义缓存路径48 .diskCache(new UnlimitedDiskCache(cacheDir))49 .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值50 // .diskCacheFileCount(100) // 可以缓存的文件数量51 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密52 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())53 // .connectTimeout (5 s), readTimeout (30 s) //超时时间54 //第二个参数:连接超时时间,第三个参数:读取超时时间55 .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))56 .defaultDisplayImageOptions(options)57 .writeDebugLogs() // 打印debug log58 .build(); //开始构建59 60 //初始化ImageLoader61 ImageLoader.getInstance().init(configuration);62 63 }
1 在activity应用 2 3 public class MainActivity extends AppCompatActivity { 4 5 private String url; 6 7 @Override 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState);10 setContentView(R.layout.activity_main);11 12 //初始化组件13 GridView gridView= (GridView) findViewById(R.id.lv);14 gridView.setAdapter(new ImageAdapter(this,ImageUrlArrays.IMAGE_URL_ARRAYS));15 16 17 /* //初始化图片加载框架18 final ImageLoader imageLoader = ImageLoader.getInstance();*/19 20 //第一种加载方式 需要个url图片地址21 url = "http://www.chinagirlol.cc/data/attachment/forum/201412/03/233758hw7o7h08kkozkcwi.jpg";22 imageLoader.displayImage(ImageUrlArrays.IMAGE_URL_ARRAYS[8],imageView);23 24 /* //第二种加载方式25 imageLoader.displayImage(url, imageView, new ImageLoadingListener() {26 @Override //刚开始加载的图片27 public void onl oadingStarted(String s, View view) {28 imageView.setImageResource(R.drawable.image_nor);29 }30 31 @Override //加载失败图片32 public void onl oadingFailed(String s, View view, FailReason failReason) {33 34 }35 36 @Override//加载完成的图片37 public void onl oadingComplete(String s, View view, Bitmap bitmap) {38 imageView.setImageBitmap(bitmap);39 }40 41 @Override//取消加载42 public void onl oadingCancelled(String s, View view) {43 44 }45 });*/46 47 /* //第三种加载方式 设固定宽高48 ImageSize imageSize=new ImageSize(140,160);49 imageLoader.loadImage(ImageUrlArrays.IMAGE_URL_ARRAYS[10],imageSize,new SimpleImageLoadingListener(){50 @Override51 public void onl oadingComplete(String imageUri, View view, Bitmap loadedImage) {52 super.onLoadingComplete(imageUri, view, loadedImage);53 imageView.setImageBitmap(loadedImage);54 }55 });56 */57 }58 }
以上代码在以后的修改比较麻烦 所以我们可以自己在封装起来,变成自己的再用,方便修改
1 public class WXHLImageLoader { 2 3 //懒汉单例 4 private static WXHLImageLoader wxhlImageLoader; 5 //获取第三方的ImageLoader 6 private ImageLoader imageLoader; 7 8 private WXHLImageLoader(){ 9 imageLoader = ImageLoader.getInstance();10 }11 12 /**13 * 单例14 * @return15 */16 public static synchronized WXHLImageLoader getInstance(){17 // return wxhlImageLoader;18 if(wxhlImageLoader == null){19 wxhlImageLoader = new WXHLImageLoader();20 }21 return wxhlImageLoader;22 }23 24 /**25 * 显示图片26 * @param imageUrl27 * @param imageView28 */29 public void displayImage(String imageUrl, ImageView imageView){30 imageLoader.displayImage(imageUrl,imageView);31 }32 33 /**34 * 显示图片,带监听器的35 * @param imageUrl36 * @param imageView37 */38 public void displayImage(String imageUrl, ImageView imageView,ImageLoadingListener listener){39 imageLoader.displayImage(imageUrl,imageView,listener);40 }41 42 /**43 * 加载图片,带监听器的44 * @param imageUrl45 * @param listener46 */47 public void loadImage(String imageUrl, SimpleImageLoadingListener listener){48 imageLoader.loadImage(imageUrl,listener);49 }50 51 /**52 * 加载图片,带监听器的53 * @param imageUrl54 * @param listener55 */56 public void loadImage(String imageUrl, int width, int height, SimpleImageLoadingListener listener){57 ImageSize targetSize = new ImageSize(width, height); // result Bitmap will be fit to this size58 imageLoader.loadImage(imageUrl,targetSize,listener);59 }60 61 62 }
第三方的图片加载( Android-Universal-Image-Loader)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。