先导universal-image-loader-1.9.3包
在application配置 android:name=".MyApplication"
intent权限
1 package com.ch.day13_imageloaderdemo;
2
3 import java.io.File;
4 5 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; 6 import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; 7 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; 8 import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; 9 import com.nostra13.universalimageloader.core.DisplayImageOptions; 10 import com.nostra13.universalimageloader.core.ImageLoader; 11 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; 12 import com.nostra13.universalimageloader.core.assist.ImageScaleType; 13 import com.nostra13.universalimageloader.core.assist.QueueProcessingType; 14 import com.nostra13.universalimageloader.core.decode.BaseImageDecoder; 15 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; 16 import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; 17 import com.nostra13.universalimageloader.core.download.BaseImageDownloader; 18 19 import android.app.Application; 20 import android.graphics.Bitmap; 21 import android.os.Environment; 22 import android.util.Log; 23 24 public class MyApplication extends Application{ 25 26 @Override 27 public void onCreate() { 28 // TODO Auto-generated method stub 29 super.onCreate(); 30 Log.i("TAG", "自定义的application类调用了....."); 31 //创建ImageLoader的默认配置 32 // ImageLoaderConfiguration confing = ImageLoaderConfiguration.createDefault(this); 33 //得到sdcard路径 34 String sdpath = Environment.getExternalStorageDirectory().getPath(); 35 //自定义ImageLoaderConfiguration 36 ImageLoaderConfiguration confing = new ImageLoaderConfiguration.Builder(this) 37 .memoryCacheExtraOptions(480, 800)// default = device screen dimensions 内存缓存文件的最大长宽 38 .diskCacheExtraOptions(480, 800, null)// 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个 39 // .taskExecutor(null) 40 // .taskExecutorForCachedImages(null) 41 .threadPoolSize(3)// default 线程池内加载的数量 42 .threadPriority(Thread.NORM_PRIORITY-2) // default 设置当前线程的优先级 43 .tasksProcessingOrder(QueueProcessingType.FIFO)//任务的处理顺序 44 .denyCacheImageMultipleSizesInMemory() 45 .memoryCache(new LruMemoryCache(2 * 1024 * 1024))////设置自己的内存缓存大小 2m 46 .memoryCacheSize(2 * 1024 * 1024) 47 // .memoryCacheSizePercentage(13) 48 .diskCache(new UnlimitedDiscCache(new File(sdpath+"/app1407a/imgcache")))//设置缓存的图片在sdcard中的存放位置 49 .diskCacheSize(50 * 1024 * 1024) 50 .diskCacheFileCount(100) 51 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//md5加密的方式,或new HashCodeFileNameGenerator() 52 .imageDownloader(new BaseImageDownloader(this)) 53 // .imageDecoder(new BaseImageDecoder(true)) 54 .defaultDisplayImageOptions(null)//不适用默认的图片加载配置,使用自定义的 55 .writeDebugLogs() 56 .build(); 57 //初始化 58 ImageLoader.getInstance().init(confing); 59 } 60 61 public static DisplayImageOptions getOptions(){ 62 //自定义加载图片的配置信息 63 DisplayImageOptions option = new DisplayImageOptions.Builder() 64 .showImageOnLoading(R.drawable.ic_launcher)// 设置图片下载期间显示的图片 65 .showImageForEmptyUri(R.drawable.emptyurl) // 设置图片Uri为空或是错误的时候显示的图片 66 .showImageOnFail(R.drawable.emptyurl)// 设置图片加载或解码过程中发生错误显示的图片 67 .resetViewBeforeLoading(false)// default 设置图片在加载前是否重置、复位 68 // .delayBeforeLoading(1000)// 下载前的延迟时间 69 .cacheInMemory(true)// default 设置下载的图片是否缓存在内存中 70 .cacheOnDisk(true)// default 设置下载的图片是否缓存在SD卡中 71 .considerExifParams(false) 72 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)//设置图片的显示比例 73 .bitmapConfig(Bitmap.Config.RGB_565)// default 设置图片的解码类型 74 // .displayer(new RoundedBitmapDisplayer(75))//设置图片的圆角半径 75 .displayer(new FadeInBitmapDisplayer(8000))//设置图片显示的透明度过程时间 76 .build(); 77 78 return option; 79 } 80 81 }
1 package com.ch.day13_imageloaderdemo;
2
3 import com.nostra13.universalimageloader.core.ImageLoader;
4 import com.nostra13.universalimageloader.core.assist.FailReason; 5 import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; 6 import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener; 7 8 import android.os.Bundle; 9 import android.app.Activity; 10 import android.app.ProgressDialog; 11 import android.graphics.Bitmap; 12 import android.util.Log; 13 import android.view.Menu; 14 import android.view.View; 15 import android.widget.ImageView; 16 17 public class MainActivity extends Activity { 18 private ImageView img; 19 String url = "http://photocdn.sohu.com/kis/fengmian/1193/1193693/1193693_ver_big.jpg"; 20 String url1 = "http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg"; 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_main); 25 26 init(); 27 } 28 29 public void init(){ 30 img = (ImageView) findViewById(R.id.img); 31 //通过ImageLoader加载网络图片,配置给img 32 // ImageLoader.getInstance().displayImage(url, img); 33 // ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions()); 34 // ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions(), new ImageLoadingListener() { 35 // @Override 36 // public void onLoadingStarted(String arg0, View arg1) { 37 // } 38 // @Override 39 // public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { 40 // } 41 // @Override 42 // public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { 43 // } 44 // @Override 45 // public void onLoadingCancelled(String arg0, View arg1) { 46 // } 47 // }); 48 final ProgressDialog pro = new ProgressDialog(this); 49 pro.setMessage("努力加载中。。。"); 50 pro.setIcon(R.drawable.ic_launcher); 51 pro.show(); 52 ImageLoader.getInstance().displayImage(url1, img, MyApplication.getOptions(), null, new ImageLoadingProgressListener() { 53 54 @Override 55 public void onProgressUpdate(String arg0, View arg1, int arg2, int arg3) { 56 // TODO Auto-generated method stub 57 Log.i("TAG", arg0+",,"+arg2+","+arg3); 58 float rs = ((float)arg2)/arg3; 59 pro.setMessage("当前加载到:"+rs*100+"%"); 60 if(arg2 == arg3){ 61 pro.cancel(); 62 } 63 } 64 }); 65 } 66 67 @Override 68 public boolean onCreateOptionsMenu(Menu menu) { 69 // Inflate the menu; this adds items to the action bar if it is present. 70 getMenuInflater().inflate(R.menu.activity_main, menu); 71 return true; 72 } 73 74 }