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 详解相关推荐

  1. android universal image loader 缓冲原理详解

    1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的.可高度定制的图片缓存,本文简称为UIL ...

  2. Android App优化之ANR详解

    引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...

  3. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  4. 【胖虎的逆向之路】02——Android整体加壳原理详解实现

    [胖虎的逆向之路](02)--Android整体加壳原理详解&实现 Android Apk的加壳原理流程及详解 文章目录 [胖虎的逆向之路](02)--Android整体加壳原理详解& ...

  5. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  6. android+发邮件,Android发送邮件的方法实例详解

    Android发送邮件的方法实例详解 时间:2021-05-20 本文实例讲述了Android发送邮件的方法.分享给大家供大家参考,具体如下: 在android手机中实现发送邮件的功能也是不可缺少的. ...

  7. Android Telephony分析(五) ---- TelephonyRegistry详解

    本文紧接着上一篇文章<Android Telephony分析(四) -- TelephonyManager详解 >的1.4小节.  从TelephonyRegistry的大部分方法中:  ...

  8. Android Telephony分析(三) ---- RILJ详解

    前言 本文主要讲解RILJ工作原理,以便更好地分析代码,分析业务的流程.  这里说的RILJ指的是RIL.java (frameworks\opt\telephony\src\java\com\And ...

  9. Android Telephony分析(二) ---- RegistrantList详解

    前言 本文主要讲解RegistrantList的原理,以及如何快速分析RegistrantList相关的代码流程.  在Telephony模块中,在RIL.Tracker(ServiceStateTr ...

  10. Android Gradle manifestPlaceholders 占位符详解

    Android Gradle manifestPlaceholders 占位符详解 在实际项目中,AndroidManifest里十几个地方的值是需要动态的改变(生成apk文件的时候).如果每次去改也 ...

最新文章

  1. 红薯因 Swift 重写开源中国失败,貌似欲改用 Python
  2. 列举ospf的5种报文类型_这5种“专升本”你都知道吗?那个含金量更高呢?报考如何选择?...
  3. 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)
  4. 百练OJ:2388:寻找中位数
  5. 一个按钮,如果5分钟内点击再次点击给予提示操作频繁,在JS里可以这样写
  6. Source Insight经典教程
  7. ffmpeg下载直播流
  8. Flink java作为消费者连接虚拟机中的kafka/或本地的kafka,并解决java.net.UnknownHostException报错
  9. 开课吧课堂之何时调用构造函数
  10. 「Mac新手必备」自定义 Mac 上的控制中心和菜单栏
  11. llnmp 环境一键部署 2种安装方法
  12. 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
  13. Oracle自定义函数示例
  14. Swift 周报 第十期
  15. 分享PC魔音Morin v2.6.5听歌·音乐神器
  16. 微信开发者工具通过二维码编译步骤
  17. 父子进程终止顺序与僵死进程
  18. 2022安全员-A证考试题模拟考试题库模拟考试平台操作
  19. JavaScript 基础知识
  20. cocos2d-x 横板游戏触屏人物和背景移动 方法2

热门文章

  1. Cookie和Session的知识
  2. 三行代码隐藏所有console.log
  3. oracle dbua 升级,33篇Oracle升级文档大全(收藏版)
  4. 低压抽屉柜常见故障处理方法_传真机常见故障如何处理 传真机常见故障处理方法【详解】...
  5. mindray心电监护仪使用说明_界面张力仪的使用步骤以及画面清晰度相关说明
  6. Python出现AttributeError: module ‘tkinter‘ has no attribute ‘messagebox‘,已解决
  7. php数组书写形式,php数组(array)输出的三种形式讲解
  8. 20191007:选择排序,插入排序,冒泡排序详解
  9. jq获得当前元素id
  10. kafka性能高的影响因素