Android第三方框架 Universal-Image-Loader的使用,进一步封装
1、新建MyApplication类
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
initImageLoader(getApplicationContext());
}
private void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(
getApplicationContext(), "Travel/"); // 设置内存卡的路径
ImageLoaderConfiguration config = new
ImageLoaderConfiguration.Builder(
context).threadPriority(Thread.NORM_PRIORITY - 2)// 设置当前线程优先级
.denyCacheImageMultipleSizesInMemory() // 缓存显示不同 大小的同一张图片
.diskCacheSize(50 * 1024 * 1024) // 本地Sd卡的缓存最大值
.diskCache(new UnlimitedDiscCache(cacheDir))// sd卡缓存
.memoryCache(new WeakMemoryCache()) // 内存缓存
.tasksProcessingOrder(QueueProcessingType.LIFO).build();
ImageLoader.getInstance().init(config);
}
2.在AndroidManifest的Application中注册
<application
android:name="com.TravelRecommendation.travel.entity.MyApplication"//包名+类名
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
3.新建ImgTools类
public class ImgTools {
ImageLoader loder;
static ImgTools imgTools;
privateImgTools() {
// 实例化ImageLoader
loder = ImageLoader.getInstance();
}
/**
* 使用单例模式对ImgTools进行实例化
* @return
*/
public static ImgTools getInstance() {
if (imgTools == null) {
imgTools = new ImgTools();
}
return imgTools;
}
/**
* 获取正常的图片
*
* @param imgUrl网络图片的地址
* @param img
* @param drawable
* 下载时,uri为空,加载错误时显示的图片
*/
public ImageLoader getImgFromNetByUrl(String imgUrl, ImageView img,
int drawableId) {
ImageLoader loder = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(drawableId) // 设置正在下载是显示的图片
.showImageForEmptyUri(drawableId)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(drawableId)// 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)// 是否緩存都內存中
.cacheOnDisk(true)// 是否緩存到sd卡上
.considerExifParams(true) // 启用EXIF和JPEG图像格式
.bitmapConfig(Bitmap.Config.ARGB_4444)
.build();
loder.displayImage(imgUrl, img, options);
return loder;
}
/**
* 获取圆角的图片
*
* @param imgUrl
* 网络图片的地址
* @param img
* @param drawable
* 下载时,uri为空,加载错误时显示的图片
* @param radius
* 圆角的弧度
*/
public void getRadiusImgFromNetByUrl(String imgUrl, ImageView img,
int drawableId, int radius) {
ImageLoader loder = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(drawableId)
// 设置正在下载是显示的图片
.showImageForEmptyUri(drawableId)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(drawableId)
// 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)
// 是否緩存都內存中
.cacheOnDisk(true)
// 是否緩存到sd卡上
.considerExifParams(true)
// 启用EXIF和JPEG图像格式
.displayer(new RoundedBitmapDisplayer(radius))
.bitmapConfig(Bitmap.Config.ARGB_4444)
.build();
loder.displayImage(imgUrl, img, options);
}
●
使用实例
ImageView img;
ImgTools imgTools;
img=(ImageView)findViewById(XXX);
imgTools=new ImgTools();
imgTools.getImgFromNetByUrl("图片的网络地址",img,默认显示的图片);
1、新建MyApplication类
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
initImageLoader(getApplicationContext());
}
private void initImageLoader(Context context) {
File cacheDir = StorageUtils.getOwnCacheDirectory(
getApplicationContext(), "Travel/"); // 设置内存卡的路径
ImageLoaderConfiguration config = new
ImageLoaderConfiguration.Builder(
context).threadPriority(Thread.NORM_PRIORITY - 2)// 设置当前线程优先级
.denyCacheImageMultipleSizesInMemory() // 缓存显示不同 大小的同一张图片
.diskCacheSize(50 * 1024 * 1024) // 本地Sd卡的缓存最大值
.diskCache(new UnlimitedDiscCache(cacheDir))// sd卡缓存
.memoryCache(new WeakMemoryCache()) // 内存缓存
.tasksProcessingOrder(QueueProcessingType.LIFO).build();
ImageLoader.getInstance().init(config);
}
2.在AndroidManifest的Application中注册
<application
android:name="com.TravelRecommendation.travel.entity.MyApplication"//包名+类名
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
3.新建ImgTools类
public class ImgTools {
ImageLoader loder;
static ImgTools imgTools;
privateImgTools() {
// 实例化ImageLoader
loder = ImageLoader.getInstance();
}
/**
* 使用单例模式对ImgTools进行实例化
* @return
*/
public static ImgTools getInstance() {
if (imgTools == null) {
imgTools = new ImgTools();
}
return imgTools;
}
/**
* 获取正常的图片
*
* @param imgUrl网络图片的地址
* @param img
* @param drawable
* 下载时,uri为空,加载错误时显示的图片
*/
public ImageLoader getImgFromNetByUrl(String imgUrl, ImageView img,
int drawableId) {
ImageLoader loder = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(drawableId) // 设置正在下载是显示的图片
.showImageForEmptyUri(drawableId)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(drawableId)// 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)// 是否緩存都內存中
.cacheOnDisk(true)// 是否緩存到sd卡上
.considerExifParams(true) // 启用EXIF和JPEG图像格式
.bitmapConfig(Bitmap.Config.ARGB_4444)
.build();
loder.displayImage(imgUrl, img, options);
return loder;
}
/**
* 获取圆角的图片
*
* @param imgUrl
* 网络图片的地址
* @param img
* @param drawable
* 下载时,uri为空,加载错误时显示的图片
* @param radius
* 圆角的弧度
*/
public void getRadiusImgFromNetByUrl(String imgUrl, ImageView img,
int drawableId, int radius) {
ImageLoader loder = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(drawableId)
// 设置正在下载是显示的图片
.showImageForEmptyUri(drawableId)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(drawableId)
// 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)
// 是否緩存都內存中
.cacheOnDisk(true)
// 是否緩存到sd卡上
.considerExifParams(true)
// 启用EXIF和JPEG图像格式
.displayer(new RoundedBitmapDisplayer(radius))
.bitmapConfig(Bitmap.Config.ARGB_4444)
.build();
loder.displayImage(imgUrl, img, options);
}
●
使用实例
ImageView img;
ImgTools imgTools;
img=(ImageView)findViewById(XXX);
imgTools=new ImgTools();
imgTools.getImgFromNetByUrl("图片的网络地址",img,默认显示的图片);