Android-Universal-Image-Loader-master 详解
Android-Universal-Image-Loader-master 使用
下载地址:https://github.com/nostra13/Android-Universal-Image-Loader
步骤:
1)、先要配置ImageLoaderConfiguration这个类实现全局ImageLoader的实现情况,
可知Application中配置。
// This configuration tuning is custom. You can tune every option, you may tune some of them,
// or you can create default configuration by
// ImageLoaderConfiguration.createDefault(this);
// method.
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs(); // Remove for release app
注:更多配置项到ImageLoaderConfiguration.Builder中查看。
2)、初始化全局配置
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
3)、初始化显示图片格式DisplayImageOptions的设置
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(20))
.build();
4)、加载图片到控件上
ImageLoader.getInstance().displayImage(p_w_picpathUrls[position], holder.p_w_picpath, options,null);
注:displayImage此方法有多个重载形式,根据情况选择其一。
5)实例:
5.1)配置全局参数并初始化:
/*******************************************************************************
public class UILApplication extends Application {
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressWarnings("unused")
@Override
public void onCreate() {
if (Constants.Config.DEVELOPER_MODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDialog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyDeath().build());
}
super.onCreate();
initImageLoader(getApplicationContext());
}
//初始化ImageLoader全局配置
public static void initImageLoader(Context context) {
// This configuration tuning is custom. You can tune every option, you may tune some of them,
// or you can create default configuration by
// ImageLoaderConfiguration.createDefault(this);
// method.
ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context);
config.threadPriority(Thread.NORM_PRIORITY - 2);
config.denyCacheImageMultipleSizesInMemory();
config.diskCacheFileNameGenerator(new Md5FileNameGenerator());
config.diskCacheSize(50 * 1024 * 1024); // 50 MiB
config.tasksProcessingOrder(QueueProcessingType.LIFO);
config.writeDebugLogs(); // Remove for release app
// Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(config.build());
}
}
5.2)、
public class MyActivity extends Activity {
private LayoutInflater inflater;
private DisplayImageOptions options;
private ListView listView;
String[] p_w_picpathUrls = Constants.IMAGES;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fr_p_w_picpath_list);
inflater=LayoutInflater.from(this);
init();
listView= (ListView) findViewById(android.R.id.list);
listView.setAdapter(new MyBaseAdapter());
}
private class MyBaseAdapter extends BaseAdapter{
@Override
public int getCount() {
return p_w_picpathUrls.length;
}
@Override
public Object getItem(int position) {
return p_w_picpathUrls[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=convertView;
ViewHolder holder;
if(convertView==null){
holder=new ViewHolder();
view = inflater.inflate(R.layout.item_list_p_w_picpath, parent, false);
holder.p_w_picpath = (ImageView) view.findViewById(R.id.p_w_picpath);
holder.text = (TextView) view.findViewById(R.id.text);
view.setTag(holder);
}else{
holder=(ViewHolder) view.getTag();
}
holder.text.setText("Item " + (position + 1));
//实例化ImageLoader并加载图片
ImageLoader.getInstance().displayImage(p_w_picpathUrls[position], holder.p_w_picpath, options,null);
return view;
}
}
//view缓存对象
private static class ViewHolder {
TextView text;
ImageView p_w_picpath;
}
private void init() {
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub)
.showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(20))
.build();
}
}
转载于:https://blog.51cto.com/cbg23/1633310
Android-Universal-Image-Loader-master 详解相关推荐
- android universal image loader 缓冲原理详解
1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL ...
- Android App优化之ANR详解
引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- 【胖虎的逆向之路】02——Android整体加壳原理详解实现
[胖虎的逆向之路](02)--Android整体加壳原理详解&实现 Android Apk的加壳原理流程及详解 文章目录 [胖虎的逆向之路](02)--Android整体加壳原理详解& ...
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
. 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...
- android+发邮件,Android发送邮件的方法实例详解
Android发送邮件的方法实例详解 时间:2021-05-20 本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的. ...
- Android Telephony分析(五) ---- TelephonyRegistry详解
本文紧接着上一篇文章<Android Telephony分析(四) -- TelephonyManager详解 >的1.4小节. 从TelephonyRegistry的大部分方法中: ...
- Android Telephony分析(三) ---- RILJ详解
前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程. 这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\And ...
- Android Telephony分析(二) ---- RegistrantList详解
前言 本文主要讲解RegistrantList的原理,以及如何快速分析RegistrantList相关的代码流程. 在Telephony模块中,在RIL.Tracker(ServiceStateTr ...
- Android Gradle manifestPlaceholders 占位符详解
Android Gradle manifestPlaceholders 占位符详解 在实际项目中,AndroidManifest里十几个地方的值是需要动态的改变(生成apk文件的时候).如果每次去改也 ...
最新文章
- 红薯因 Swift 重写开源中国失败,貌似欲改用 Python
- 列举ospf的5种报文类型_这5种“专升本”你都知道吗?那个含金量更高呢?报考如何选择?...
- 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)
- 百练OJ:2388:寻找中位数
- 一个按钮,如果5分钟内点击再次点击给予提示操作频繁,在JS里可以这样写
- Source Insight经典教程
- ffmpeg下载直播流
- Flink java作为消费者连接虚拟机中的kafka/或本地的kafka,并解决java.net.UnknownHostException报错
- 开课吧课堂之何时调用构造函数
- 「Mac新手必备」自定义 Mac 上的控制中心和菜单栏
- llnmp 环境一键部署 2种安装方法
- 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
- Oracle自定义函数示例
- Swift 周报 第十期
- 分享PC魔音Morin v2.6.5听歌·音乐神器
- 微信开发者工具通过二维码编译步骤
- 父子进程终止顺序与僵死进程
- 2022安全员-A证考试题模拟考试题库模拟考试平台操作
- JavaScript 基础知识
- cocos2d-x 横板游戏触屏人物和背景移动 方法2
热门文章
- Cookie和Session的知识
- 三行代码隐藏所有console.log
- oracle dbua 升级,33篇Oracle升级文档大全(收藏版)
- 低压抽屉柜常见故障处理方法_传真机常见故障如何处理 传真机常见故障处理方法【详解】...
- mindray心电监护仪使用说明_界面张力仪的使用步骤以及画面清晰度相关说明
- Python出现AttributeError: module ‘tkinter‘ has no attribute ‘messagebox‘,已解决
- php数组书写形式,php数组(array)输出的三种形式讲解
- 20191007:选择排序,插入排序,冒泡排序详解
- jq获得当前元素id
- kafka性能高的影响因素