1. package adapter;
  2.  
  3. import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Environment;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
  4.  
  5. import com.example.examday08.R;
    import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
    import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
    import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
    import com.nostra13.universalimageloader.core.DisplayImageOptions;
    import com.nostra13.universalimageloader.core.ImageLoader;
    import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
    import com.nostra13.universalimageloader.core.assist.ImageScaleType;
    import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
    import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
    import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
  6.  
  7. import java.io.File;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
  8.  
  9. import bean0.Result;
  10.  
  11. /**
    * Created by lenovo on 2017/12/6.
    */
  12.  
  13. public class MyAdapter extends BaseAdapter {
    private List<Result.NewslistBean>list;
    private Context context;
  14.  
  15. public MyAdapter(List<Result.NewslistBean> list, Context context) {
    this.list = list;
    this.context = context;
    File cacheDir= new File(Environment.getExternalStorageDirectory().getPath()+"/aaa");//自定义 sd卡的缓存路径
  16.  
  17. //第一步:对ImageLoader进行初使化
    ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
    .memoryCacheExtraOptions(320, 450) // default = device screen dimensions 内存缓存文件的最大长宽
    .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
    .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
    .tasksProcessingOrder(QueueProcessingType.FIFO) // default
    .denyCacheImageMultipleSizesInMemory()
    .memoryCache(new LruMemoryCache(10 * 1024 * 1024)) //可以通过自己的内存缓存实现
    .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
    .memoryCacheSizePercentage(13) // default
  18.  
  19. .diskCache(new UnlimitedDiscCache(cacheDir)) // 磁盘缓存 --default 可以自定义缓存路径
  20.  
  21. .diskCacheSize(20 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
  22.  
  23. .diskCacheFileCount(100) // 可以缓存的文件数量
    // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
    .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
    .imageDownloader(new BaseImageDownloader(context)) // default
    .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
    .writeDebugLogs() // 打印debug log
    .build();
  24.  
  25. ImageLoader.getInstance().init(configuration);
  26.  
  27. }
  28.  
  29. @Override
    public int getCount() {
    return list.size();
    }
  30.  
  31. @Override
    public Object getItem(int i) {
    return list.get(i);
    }
  32.  
  33. @Override
    public long getItemId(int i) {
    return i;
    }
  34.  
  35. @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
  36.  
  37. view =View.inflate(context, R.layout.item,null);
    TextView text = view.findViewById(R.id.text1);
    ImageView img1 = view.findViewById(R.id.img);
  38.  
  39. text.setText(list.get(i).getTitle());
    //第二步:进行图片的显示配置
    DisplayImageOptions options=new DisplayImageOptions.Builder()
    .cacheInMemory(true)//使用内存缓存
    .cacheOnDisk(true)//使用磁盘缓存
  40.  
  41. .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
    .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
    .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
  42.  
  43. .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
    .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式===imageView,,ScaleType
    .displayer(new RoundedBitmapDisplayer(100))//设置图片圆角显示 弧度
    .build();
  44.  
  45. //第三步:下载图片
    ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), img1, options);
    // new MyTask(img1).execute(list.get(i).getPicUrl());
    return view;
    }
    class MyTask extends AsyncTask<String,Void,Bitmap> {
    private ImageView img;
  46.  
  47. public MyTask(ImageView img) {
    this.img = img;
    }
  48.  
  49. @Override
    protected Bitmap doInBackground(String... strings) {
    Bitmap bitmap = null;
    StringBuilder builder =new StringBuilder();
    try {
    URL url = new URL(strings[0]);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  50.  
  51. connection.setRequestMethod("GET");
    connection.setReadTimeout(5000);
    connection.setConnectTimeout(5000);
    if (connection.getResponseCode()==200){
    InputStream inputStream = connection.getInputStream();
    bitmap = BitmapFactory.decodeStream(inputStream);
  52.  
  53. }
  54.  
  55. } catch (Exception e) {
    e.printStackTrace();
    }
    return bitmap;
    }
  56.  
  57. @Override
    protected void onPostExecute(Bitmap s) {
    img.setImageBitmap(s);
  58.  
  59. }
    }
    }

Imageloader框架的更多相关文章

  1. ImageLoader框架的使用、调用系统相册显示图片并裁剪显示、保存图片的两种方式

    ImageLoader虽然说是一个相对于比较老的一个框架了 ,但是总的来说,还是比较好用的,今天我就总结了一下它的用法.还有调用系统相册并裁剪,以及,通过sharedpreference和文件存储来保 ...

  2. android使用ImageLoader实现图片缓存(安卓开发必备)

    相信大家在学习以及实际开发中基本都会与网络数据打交道,而这其中一个非常影响用户体验的就是图片的缓存了,若是没有弄好图片缓存,用户体验会大大下降,总会出现卡顿情况,而这个问题尤其容易出现在ListVie ...

  3. Android开发用过的十大框架

    http://blog.csdn.net/u011200604/article/details/51695096 本文系多方综合与转载整合,意在Android开发中能够知道和使用一些好用的第三方支持, ...

  4. imageLoader之介绍

    相信大家在学习以及实际开发中基本都会与网络数据打交道,而这其中一个非常影响用户体验的就是图片的缓存了,若是没有弄好图片缓存,用户体验会大大下降,总会出现卡顿情况,而这个问题尤其容易出现在ListVie ...

  5. Android-LruCache与DiskLruCache

    Android LruCache与DiskLruCache 学习自 Android开发艺术探索 https://blog.csdn.net/guolin_blog/article/details/28 ...

  6. KJBitmap使用方法

    摘要 本文原创,转载请注明地址:http://kymjs.com/code/2015/03/25/01 摘要 好像最近一个月都没有写博客了,正好伴着KJFrameForAndroid 更新v2.14版 ...

  7. 深入解析开源项目之Universal-Image-Loader(二)内存---缓存篇

    珍惜作者劳动成果,如需转载,请注明出处. http://blog.csdn.net/zhengzechuan91/article/details/50292871 Universal-Image-Lo ...

  8. swift 异步加载图片(第三方框架ImageLoader)

    import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...

  9. Android开源框架ImageLoader的完美例子

    本文转载于:http://blog.csdn.net/wwj_748/article/details/10079311 2013年8月19日开源框架之Universal_Image_Loader学习 ...

随机推荐

  1. dubbo 笔记-XML配置文件简介

    <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心. eg.<dubbo:service r ...

  2. 前端页面中如何在窗口缩放时让两个div始终在同一行显示

    直接贴代码吧 先总结一下吧  有两种方法 一    最外层设置一个大div  给这个大div固定的宽度和高度 给里面两个小div 设置浮动  设置宽高 <!DOCTYPE html> &l ...

  3. Linux.根据进程名关键字杀进程

    先看例子, 假设系统中有以下2个进程 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND root     ...

  4. Swift 之Protocol在cocoa中的使用范例搜集(一)

    protocol Reusable: class { static var reuseIndentifier: String {get} static var nib: UINib? {get} } ...

  5. angular核心$watch,$digest,$apply之间的联系

    浏览器事件发生时,会在浏览器的上下文window中执行,而angular有自己的上下文angular content,angular 事件在自己的上下文angular content中执行. $wat ...

  6. Android 开发笔记___EditText__文本编辑框

    常用属性: inputType:(代码中:setiputtype)设置输入类型,多种类型中间用"|" maxlength:最大长度,无法通过代码设置 hint:提示文本内容,(代码 ...

  7. Android 开发笔记___滚动视图__scroll view

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. 启动Apache出现问题:一直停留在启动界面

    问题描述:  由于需要php_curl模块,因此直接在php.ini文件将前面的分号去掉  ,但是重启Apache时出现:一直停留在启动界面,Apache无法正常启动,查看错误日志,显示如下: 解决方 ...

  9. php header设置页面编码

    php header设置页面编码 未分类 PHP 页面编码声明方法详解(header或meta) http://www.jb51.net/article/22501.htm PHP 页面编码声明与用h ...

  10. Java设计模式相关面试

    1.接口是什么?为什么要使用接口而不是直接使用具体类? 接口用于定义 API.它定义了类必须得遵循的规则.同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使 ...