import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.widget.ImageView;
import com.lokinfo.m95xiu.application.LokApp;
import com.lokinfo.m95xiu.util.M95Log;
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.CircleBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
public class ImageHelper {
public static void init(Context context){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示
.bitmapConfig(Config.RGB_565)//设置图片的解码类型//
.build();//构建完成
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context.getApplicationContext())
.memoryCacheExtraOptions(480, 800)
.threadPoolSize(3)//线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY)
.denyCacheImageMultipleSizesInMemory()
.tasksProcessingOrder(QueueProcessingType.FIFO)
.defaultDisplayImageOptions(options)
.writeDebugLogs()
.build();//开始构建
ImageLoader.getInstance().init(config);//全局初始化此配置
}
public static void loadImage(String urlString , ImageView imageView , int defaultRes){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(defaultRes) //设置图片在下载期间显示的图片
.showImageForEmptyUri(defaultRes)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(defaultRes) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示
.bitmapConfig(Config.RGB_565)//设置图片的解码类型//
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.build();//构建完成
ImageLoader.getInstance().displayImage(urlString, imageView, options);
}
/**
* 加载圆角图片
* @param urlString
* @param imageView
* @param cornerRadius 圆角大小
* @param defaultRes
*/
public static void LoadRoundImage(String urlString , ImageView imageView , int cornerRadius , int defaultRes){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(defaultRes) //设置图片在下载期间显示的图片
.showImageForEmptyUri(defaultRes)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(defaultRes) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示
.bitmapConfig(Config.RGB_565)//设置图片的解码类型//
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(cornerRadius))//是否设置为圆角,弧度为多少
.build();//构建完成
ImageLoader.getInstance().displayImage(urlString, imageView, options);
}
/**
* 加载圆形图片
* @param urlString
* @param imageView
* @param defaultRes
*/
public static void LoadCircleImage(String urlString , ImageView imageView, int defaultRes){
Bitmap circleBitmap = BitmapFactory.decodeResource(LokApp.app().getApplicationContext().getResources(), defaultRes);
CircleImageDrawable circleImageDrawable = new CircleImageDrawable(circleBitmap);
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(circleImageDrawable) //设置图片在下载期间显示的图片
.showImageForEmptyUri(circleImageDrawable)//设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(circleImageDrawable) //设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
.considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示
.bitmapConfig(Config.RGB_565)//设置图片的解码类型//
.resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
.displayer(new CircleBitmapDisplayer())
.build();//构建完成
ImageLoader.getInstance().displayImage(urlString, imageView, options);
}
/**
* 获取手机上所有图片的地址
* @param context
* @return
*/
public static List<String> getAllImageFlilPath(Activity context){
List<String> paths = new ArrayList<String>();
ContentResolver cr = context.getContentResolver();
Cursor cursor = null;
try{
cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);
while(cursor.moveToNext()){
String imgPath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
if (!TextUtils.isEmpty(imgPath)){
paths.add(imgPath);
}
}
}catch(Exception e){
M95Log.e("Exception", "getAllImageFlilPath" + e.getMessage());
e.printStackTrace();
}finally{
if(cursor != null) cursor.close();
}
return paths;
}
}