注:一定要添加框架Jar包。
介绍:
A:说到ImageLoader框架其实就是网络请求图片用于把从网络上请求的图片设置到所要展示的Android控件上,
框架的底层编写了网络请求数据的代码,Thread+Handle,AsyncTask机制我们只需要初始化的框架,设置一下框架的一些参数即可使用。
B:在使用框架时首先在清单文件中添加网络以及sd的读取权限,然后在Application标签内通过name属性声明框架的全局上下文也就是继承Application的那个实现类(此类用于初始化框架)
C:具体代码如下:
如果不想给框架做一些配置直接通过以下代码实例化框架(根据需求来定)
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this).build();
全局初始化ImageLoader框架配置 ImageLoader.getInstance().init(imageLoaderConfiguration);
类介绍:这个类就是全局上下文,继承Application的类,用于初始化框架,当应用程序启动时首先会执行它,当整个程序退出, 这个上下文才消亡
package com.bwie.imageloaderdemo;
import android.app.Application;
import android.util.Log;
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;
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"
*/
* 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: " );
@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);//全局初始化此配置
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);//全局初始化此配置
}
}
// 得到ImageLoader配置 ImageLoader imageLoader = ImageLoader.getInstance(); //给控件设置图片 imageLoader.displayImage(imageUrl, imageView);
//这个类有很多的方法用于设置图片显示时的一些配置(根据需求设置)也可以不配置,底层有默认值。
DisplayImageOptions displayImageOptions = new DisplayImageOptions()
类介绍:这个类是用于得到图片框架的实例,给控件设置图片
package com.bwie.imageloaderdemo;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
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;
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";
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);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
//使用图片框架要先得到它的实例
ImageLoader imageLoader = ImageLoader.getInstance();
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();
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);
}
}