AUIL图片加载框架
使用步骤
注意:要显示imageloader的圆角效果 imageview必须固定宽高
1.导入jar包
第一个就可以了
2.添加权限
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:name=".MyApplication"
3.添加Application(并且在清单文件注册)
---------------------------------------Application配置(常规必写)---------------------------------------------
public class MyApplicationextends Application {
@Override
public void onCreate() {
//执行全局设置(遭遇任何的imageLoader的调用)
//创建默认的ImageLoader配置参数
//ImageLoaderConfigurationconfiguration = ImageLoaderConfiguration.createDefault(this);
//Initialize Imageloader withconfiguration
//ImageLoader.getInstance().init(configuration);
---------------------------------------ImageLoader配置(常规必写)---------------------------------------------
ImageLoaderConfigurationconfig=
newImageLoaderConfiguration.Builder(getApplicationContext())
.threadPriority(Thread.NORM_PRIORITY- 2)//线程的优先级别,有限避免oom
.denyCacheImageMultipleSizesInMemory()//拒绝不同的缓存大小
.diskCacheFileNameGenerator(newMd5FileNameGenerator())//对临时文件名加密
.diskCacheSize(50 *1024 * 1024) // 50 Mb SDCard上的缓存空间
.tasksProcessingOrder(QueueProcessingType.LIFO)//任务队列采取LIFO
.writeDebugLogs()//调试日志-可在项目发布时删除
.build();// 构建配置
ImageLoader.getInstance().init(config);
}
}
<application
android:name=".application.MyApplication"
4.设置
//声明监听器
private ImageLoadingListeneranimateFirstListener = new AnimateFirstDisplayListener();
//声明设置类
private DisplayImageOptionsoptions;
public ListAdapter(Contextcontext) {
this.inflater =LayoutInflater.from(context);
-------------------------------------------ImageLoader选项(常规必写)-------------------------------------------
// 图片具体配置
options=new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)// 加载时
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_empty)
.resetViewBeforeLoading(true)//在加载前重置View
.cacheInMemory(false)
.cacheOnDisk(true)
.considerExifParams(true)
//.displayer(newFadeInBitmapDisplayer(1000))// 淡入特效时//.displayer(newCircleBitmapDisplayer(Color.WHITE, 5))// 圆形特效
.build();
}
// 设置图片显示的具体参数
// 图片的显示设置(选项)
DisplayImageOptions options = newDisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)// 加载时的图标
.showImageForEmptyUri(R.drawable.ic_error)//地址错误时的图标
.showImageOnFail(R.drawable.ic_empty)//加载失败的图标
//.resetViewBeforeLoading(true)// 在加载前重置View
.cacheInMemory(false)// 把它关上,可以避免OOM
.cacheOnDisk(true)// 在SDCard上缓存
.imageScaleType(ImageScaleType.EXACTLY)//拉伸类型:确切拉伸,避免OOM
.bitmapConfig(Bitmap.Config.RGB_565)//图片的解码格式ARGB_8888(透明),ARGB_4444,RGB_565避免OOM
.considerExifParams(true)// 考虑JPEG的旋转
.displayer(newFadeInBitmapDisplayer(1000))// 淡入特效时间
//.displayer(newRoundedBitmapDisplayer(50))// 圆角矩形,参数=弧度
.displayer(newRoundedVignetteBitmapDisplayer(50,10))// 圆角矩形
.build();
5.显示图片
(1)URI规范:
String uri = "http://site.com/image.png";// 图片来自网络
String uri ="file:///mnt/sdcard/image.png"; // 图片来自 SD card
String uri ="content://media/audio/album/13"; // 图片来自 content provider
String uri = "assets://image.png";// 图片来自 assets文件夹
String uri = "drawable://" +R.drawable.image; // 图片来自 drawable文件夹
(2)参数类型
ImageLoader.getInstance().displayImage(
uri, //URI
imageView,//要显示图片的控件
options, //[ 设置 ]
listener, //[ 监听器1 ]
progressListener //[ 监听器2 ]
)
ImageLoader.getInstance().displayImage(
//URI
java.lang.String uri,
//要显示图片的控件
android.widget.ImageView imageView,
//[ 设置 ]
com.nostra13.universalimageloader.core.DisplayImageOptions options,
//[ 监听器 1 ]
com.nostra13.universalimageloader.core.listener.ImageLoadingListene
r listener,
//[ 监听器 2 ]
com.nostra13.universalimageloader.core.listener.ImageLoadingProgres
sListener progressListener
)
6.示例
1.
ImageLoader.getInstance().displayImage(map.get("uri"),holder.logo, options, new SimpleImageLoadingListener() {
@Override
public voidonLoadingStarted(String imageUri, View view) {
holder.progressBar.setProgress(0);
holder.progressBar.setVisibility(View.VISIBLE);
holder.progressBar.setBackgroundColor(Color.RED);
LinearLayout.LayoutParamsparams = new LinearLayout.LayoutParams(10, 30);
holder.box.setLayoutParams(params);
}
@Override
public voidonLoadingFailed(String imageUri, View view, FailReason failReason) {
holder.progressBar.setVisibility(View.GONE);
}
@Override
public voidonLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
holder.progressBar.setVisibility(View.GONE);//下载完成取消进度条
holder.box.setVisibility(View.GONE);
}
}, new ImageLoadingProgressListener() {
//进行监听下载进度
@Override
public void onProgressUpdate(StringimageUri, View view, int current, int total) {
int pro = Math.round(100.0f *current / total);
holder.progressBar.setProgress(pro);
LinearLayout.LayoutParamsparams = new LinearLayout.LayoutParams(10 * pro, 30);
holder.box.setLayoutParams(params);
Log.i("wxs",imageUri + ":" + pro);
}
});
2.监听器
|
private staticclass AnimateFirstDisplayListener extends SimpleImageLoadingListener {
static finalList<String> displayedImages = Collections.synchronizedList(newLinkedList<String>());
@Override
public voidonLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView =(ImageView) view;
boolean firstDisplay =!displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView,1500);
displayedImages.add(imageUri);
}
}
}
}
7.必选项封装的方法
(1)Util
/**
* ImageLoader的全局参数配置
*
* @param context
*/
public static voidinitLoader(Context context) {
// ImageLoader的全局参数配置 建造者模式
ImageLoaderConfiguration config = new
ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)// 线程的优先级别
.denyCacheImageMultipleSizesInMemory() // 拒绝不同的缓存大小
.diskCacheFileNameGenerator(newMd5FileNameGenerator())// 对临时文件名加密
.diskCacheSize(50 * 1024 *1024) // 50 Mb SDCard上的缓存空间
.tasksProcessingOrder(QueueProcessingType.LIFO)// 任务队列采取LIFO
.writeDebugLogs() //调试日志-可在项目发布时删除
.build();// 构建配置
//初始化ImageLoader 单例模式
ImageLoader.getInstance().init(config);
}
/**
* 图片显示选项的设置
*
* @return
*/
public staticDisplayImageOptions getImageOption() {
DisplayImageOptions options = newDisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
//.displayer(newCircleBitmapDisplayer(Color.WHITE, 5))//圆形特效
.build();
return options;
}
(2)Application
publicclass MyApplication extends Application {
@Override
public voidonCreate() {
super.onCreate();
//ImageLoader的全局参数配置 建造者模式
Utils.initLoader(getApplicationContext());
}
}
<application
android:name=".MyApplication"