1.MApp方法中的代码操作
package com.bwie.imageloaderdemo;
import android.app.Application;
import android.util.Log;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
/**
* author:Created by WangZhiQiang on 2017-10-09.
* 全局的上下文, app已启动运行的第一个上下文,也是全局的上下文
* 配置一些 全局的 工具, 框架,等等(代码统计, 联网框架)
* 当整个程序退出, 这个上下文才消亡;
*
* 需要再清单文件中配置Application这个类--在资源文件Application标签下 android:name=".MApp"
*/
public class MApp extends Application {
private String tag = "MApp";
@Override
public void onCreate() {
super.onCreate();
Log.e(tag, "执行了MApp的 onCreate: " );
//初始化imageLoader框架
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(this)
.memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽
.threadPoolSize(5)//线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024)
.discCacheSize(50 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密
.tasksProcessingOrder(QueueProcessingType.LIFO)
.discCacheFileCount(100) //缓存的文件数量
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.writeDebugLogs() // Remove for release app
.build();//开始构建
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config);//全局初始化此配置
}
}
2.主方法的操作
package com.bwie.imageloaderdemo;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
public class MainActivity extends AppCompatActivity {
private ImageView iv;
String imageUrl = "https://img-my.csdn.net/uploads/201407/26/1406383213_4418.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
//使用图片框架要先得到它的实例
ImageLoader imageLoader = ImageLoader.getInstance();
//图片的显示配置,这个是图片显示的一些配置,也可以不配,底层有默认值
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
.resetViewBeforeLoading(false) // default 设置图片在加载前是否重置、复位
.delayBeforeLoading(1000) // 下载前的延迟时间
.cacheInMemory(false) // default 设置下载的图片是否缓存在内存中
.cacheOnDisk(false) // default 设置下载的图片是否缓存在SD卡中
.considerExifParams(false) // default
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.ARGB_8888) // default 设置图片的解码类型
.build();
//把网络图片请求过来,并显示到控件上;
imageLoader.displayImage(imageUrl, iv,options);
}
}