依赖:
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.youth.banner:banner:1.4.9'
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
mapp全局配置类:(清单文件中加一个name=".mapp")
import android.app.Application;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
/**
* Created by DELL- on 2017/11/17.
*/
public class mapp extends Application{
@Override
public void onCreate() {
super.onCreate();
/*ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build();//开始构建
ImageLoader.getInstance().init(config);//全局初始化此配置*/
DisplayImageOptions.Builder options = new DisplayImageOptions.Builder()
.cacheInMemory(true)// 内存缓存
.cacheOnDisk(true)// 磁盘缓存
.showImageOnFail(R.drawable.black_background)//加载失败显示的图片
.considerExifParams(true)// 是否考虑EXIF信息,比如拍照方向
.displayer(new FadeInBitmapDisplayer(300));//淡入动画
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(getApplicationContext());
// 取消缓存多张尺寸不同的同一张图片
config.denyCacheImageMultipleSizesInMemory();
// 设置显示选项
config.defaultDisplayImageOptions(options.build());
// 生成缓存文件的生成器,保证唯一的文件名,可以不设置,默认使用hash算法,也是可以保证不重名的
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
// 磁盘缓存大小
config.diskCacheSize(100 * 1024 * 1024); // 100 MB
// 内存缓存大小
config.memoryCacheSize((int) (Runtime.getRuntime().freeMemory() / 4));
// 任务处理顺序,默认是FIFO 先进先出, LIFO 后进先出
config.tasksProcessingOrder(QueueProcessingType.LIFO);
// 打印调试日志
config.writeDebugLogs(); // Remove for release app
ImageLoader.getInstance().init(config.build());
}
}
主页面MainActiivity:
//给图片赋值
ImageLoader.getInstance().displayImage(list.get(position).getUserImg(),holder1.iv);
或:
package com.ch.httputils;
import java.io.File;
import android.app.Application;
import android.graphics.Bitmap;
import android.os.Environment;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
//创建ImageLoader的配置参数
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800)// max width, max height,即保存的每个缓存文件的最大长宽
.discCacheExtraOptions(480, 800, null)// 设置缓存的详细信息,最好不要设置这个
.threadPoolSize(3)// 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))//你可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024)
.discCacheSize(50 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())// 将保存的时候的URI名称用MD5 加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
.discCacheFileCount(100)// 缓存的文件数量
.discCache(new UnlimitedDiscCache(new File(Environment.getExternalStorageDirectory()
+ "/myApp/imgCache")))// 自定义缓存路径
.defaultDisplayImageOptions(getDisplayOptions())
.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))
.writeDebugLogs() // Remove for release app
.build();// 开始构建
//设置ImageLoader的配置参数
ImageLoader.getInstance().init(config);
}
private DisplayImageOptions getDisplayOptions() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)// 设置下载的图片是否缓存在内存中
.cacheOnDisc(true)// 设置下载的图片是否缓存在SD卡中
.considerExifParams(true) // 是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
// .delayBeforeLoading(int delayInMillis)//int
// delayInMillis为你设置的下载前的延迟时间
// 设置图片加入缓存前,对bitmap进行设置
// .preProcessor(BitmapProcessor preProcessor)
.resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角,弧度为多少
.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
.build();// 构建完成
return options;
}
}
或:
package com.bwie.wyy.myapplication;
import android.app.Application;
import android.os.Environment;
import android.util.Log;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.File;
public class mapp extends Application{
@Override
public void onCreate() {
super.onCreate();//一定不能省略
Log.d("wyy","myapplication的onCreate被调用......................");
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.diskCache(new UnlimitedDiskCache(new File(Environment.getExternalStorageDirectory()+ "/myappimgs1511B")))//设置本地缓存的路径
.defaultDisplayImageOptions(getOption())//设置图片加载的参数
.build();
ImageLoader.getInstance().init(configuration);
Log.d("wyy","11111111111111111111111"+Environment.getExternalStorageDirectory().getPath());
}
public DisplayImageOptions getOption(){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.build();
return options;
}
}
关于全局配置还有许多的类,请参考: http://blog.youkuaiyun.com/vipzjyno1/article/details/23206387