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"