ImageLoader加载图片

先导universal-image-loader-1.9.3包

在application配置 android:name=".MyApplication"

intent权限

package com.ch.day13_imageloaderdemo;

import java.io.File;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
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.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;

import android.app.Application;
import android.graphics.Bitmap;
import android.os.Environment;
import android.util.Log;

public class MyApplication extends Application{

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.i("TAG", "自定义的application类调用了.....");
//创建ImageLoader的默认配置
// ImageLoaderConfiguration confing = ImageLoaderConfiguration.createDefault(this);
//得到sdcard路径
String sdpath = Environment.getExternalStorageDirectory().getPath();
//自定义ImageLoaderConfiguration
ImageLoaderConfiguration confing = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800)// default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(480, 800, null)// 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
// .taskExecutor(null)
// .taskExecutorForCachedImages(null)
.threadPoolSize(3)// default 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY-2) // default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO)//任务的处理顺序
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024))////设置自己的内存缓存大小 2m
.memoryCacheSize(2 * 1024 * 1024)
// .memoryCacheSizePercentage(13)
.diskCache(new UnlimitedDiscCache(new File(sdpath+"/app1407a/imgcache")))//设置缓存的图片在sdcard中的存放位置
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileCount(100)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//md5加密的方式,或new HashCodeFileNameGenerator()
.imageDownloader(new BaseImageDownloader(this))
// .imageDecoder(new BaseImageDecoder(true))
.defaultDisplayImageOptions(null)//不适用默认的图片加载配置,使用自定义的
.writeDebugLogs()
.build();
//初始化
ImageLoader.getInstance().init(confing);
}

public static DisplayImageOptions getOptions(){
//自定义加载图片的配置信息
DisplayImageOptions option = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)// 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.emptyurl) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.emptyurl)// 设置图片加载或解码过程中发生错误显示的图片
.resetViewBeforeLoading(false)// default 设置图片在加载前是否重置、复位
// .delayBeforeLoading(1000)// 下载前的延迟时间
.cacheInMemory(true)// default 设置下载的图片是否缓存在内存中
.cacheOnDisk(true)// default 设置下载的图片是否缓存在SD卡中
.considerExifParams(false)
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)//设置图片的显示比例
.bitmapConfig(Bitmap.Config.RGB_565)// default 设置图片的解码类型
// .displayer(new RoundedBitmapDisplayer(75))//设置图片的圆角半径
.displayer(new FadeInBitmapDisplayer(8000))//设置图片显示的透明度过程时间
.build();

return option;
}

}

 
   

package com.ch.day13_imageloaderdemo;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;

import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
private ImageView img;
String url = "http://photocdn.sohu.com/kis/fengmian/1193/1193693/1193693_ver_big.jpg";
String url1 = "http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

init();
}

public void init(){
img = (ImageView) findViewById(R.id.img);
//通过ImageLoader加载网络图片,配置给img
// ImageLoader.getInstance().displayImage(url, img);
// ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions());
// ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions(), new ImageLoadingListener() {
// @Override
// public void onLoadingStarted(String arg0, View arg1) {
// }
// @Override
// public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
// }
// @Override
// public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
// }
// @Override
// public void onLoadingCancelled(String arg0, View arg1) {
// }
// });
final ProgressDialog pro = new ProgressDialog(this);
pro.setMessage("努力加载中。。。");
pro.setIcon(R.drawable.ic_launcher);
pro.show();
ImageLoader.getInstance().displayImage(url1, img, MyApplication.getOptions(), null, new ImageLoadingProgressListener() {

@Override
public void onProgressUpdate(String arg0, View arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Log.i("TAG", arg0+",,"+arg2+","+arg3);
float rs = ((float)arg2)/arg3;
pro.setMessage("当前加载到:"+rs*100+"%");
if(arg2 == arg3){
pro.cancel();
}
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

 
   
posted @ 2016-04-12 21:02  只剩下我自己了  阅读(216)  评论(0编辑  收藏  举报