先导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; }
}
|
|
|
|