概述
基本用法
导入
方法一:由于 github 上提供 jar下载,我们只需要下载 jar到我们的 libs 目录,然后右键 add as libraries 就可以了。
方法二:在 Androidstudio 中 modle 的 build.gradle 的 dependencies 节点下加入下面的依赖
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'
最简单用法
public class SimplyActivity extends Activity {
ImageView singleImgv;
ImageLoader loader;
ImageView secondImgv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simply);
init();
}
private void init() {
singleImgv = (ImageView) findViewById(R.id.imgv_single);
secondImgv = (ImageView) findViewById(R.id.imgv_two);
loader = LoadersFactory.getDefaultLoader(this);
// 粗暴调用
loader.displayImage(DataFactory.urls[0],singleImgv);
// 含有友好成分的调用
loader.loadImage(DataFactory.urls[0], new SimpleImageLoadingListener(){
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
}
@Override
public void onLoadingStarted(String imageUri, View view) {
Toast.makeText(SimplyActivity.this,"onLoadingStarted",Toast.LENGTH_SHORT).show();
super.onLoadingStarted(imageUri, view);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
Toast.makeText(SimplyActivity.this,"onLoadingComplete",Toast.LENGTH_SHORT).show();
Bitmap bitmap =loadedImage;
secondImgv.setImageBitmap(loadedImage);
super.onLoadingComplete(imageUri, view, loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
super.onLoadingCancelled(imageUri, view);
}
});
}
}
获得 Loader 的代码
/**
* 获取默认的 ImageLoader 对象
* @param context
* @return
*/
public static ImageLoader getDefaultLoader(Context context){
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(context);
ImageLoader.getInstance().init(configuration);
ImageLoader loader = ImageLoader.getInstance();
return loader;
}
显示效果:
内存大小分析,没有压缩Bitmap 对象,严重浪费,根据下面的显示效果可知,Bitmap 的宽和高都是原始宽高
这个是原图的属性
框架架构:
架构的解释:
首先你要在一个 ImageView 或者 ImageAware 上显示一个图片的时候,会调用 ImageLoader 的功能方法,例如LoadImage()系列方法,然后由 ImageLoader 中的 ImageLoaderEngine 去执行加载任务,加载任务分为几类,首先会根据图片URL和大小作为 Key 值去内存查找,然后
其他学习参考:
关于框架的 api javadoc 你下载红色方框后的jar包,找到文件夹,解压下面的文件,然后打开index.hmtl,就可以看到所有的 class 和包的组织结构了