Imageloader框架

wa521 2017-12-06 原文

Imageloader框架

package adapter;

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;

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;

import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

import bean0.Result;

/**
* Created by lenovo on 2017/12/6.
*/

public class MyAdapter extends BaseAdapter {
private List<Result.NewslistBean>list;
private Context context;

public MyAdapter(List<Result.NewslistBean> list, Context context) {
this.list = list;
this.context = context;
File cacheDir= new File(Environment.getExternalStorageDirectory().getPath()+"/aaa");//自定义 sd卡的缓存路径

//第一步:对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

.diskCache(new UnlimitedDiscCache(cacheDir)) // 磁盘缓存 --default 可以自定义缓存路径

.diskCacheSize(20 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值

.diskCacheFileCount(100) // 可以缓存的文件数量
// default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(context)) // default
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.writeDebugLogs() // 打印debug log
.build();

ImageLoader.getInstance().init(configuration);

}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int i) {
return list.get(i);
}

@Override
public long getItemId(int i) {
return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

view =View.inflate(context, R.layout.item,null);
TextView text = view.findViewById(R.id.text1);
ImageView img1 = view.findViewById(R.id.img);

text.setText(list.get(i).getTitle());
//第二步:进行图片的显示配置
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存

.showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片

.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式===imageView,,ScaleType
.displayer(new RoundedBitmapDisplayer(100))//设置图片圆角显示 弧度
.build();

//第三步:下载图片
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;

public MyTask(ImageView img) {
this.img = img;
}

@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();

connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==200){
InputStream inputStream = connection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);

}



} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}

@Override
protected void onPostExecute(Bitmap s) {
img.setImageBitmap(s);


}
}
}
posted on 2017-12-06 15:06 时光老人i 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为wa521原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/wa521/p/7992772.html

Imageloader框架的更多相关文章

随机推荐

  1. IOS + Appium自动化教程 – Young哥哥

    前言 基础环境搭建 开发证书配置 WebDriverAgent 更新 问题采坑记录指南 目录 前言 IOS 自 […]...

  2. 破解windows XP开机密码实战

    破解windows XP开机密码实战 indows xp的安全性能相对于更老的系统有了很大的提高,我们可以通过 […]...

  3. python如何在图片上添加文字(中文和英文)

    Python在图片上添加文字的两种方法:OpenCV和PIL 一、OpenCV方法 1.安装cv2 pip i […]...

  4. 重装系统时启动失败,引导信息有错误,修复磁盘的主引导记录MBR方法

      如果要修复这个磁盘的主引导记录MBR,必须在PE下才能进行,下面以通用PE工具箱来制作PE启动U盘。    […]...

  5. 通过js给网页加上水印背景

    有些后端管理系统,因为业务逻辑的需要,需要加上水印,下面就是水印方法。   function watermar […]...

  6. Java线程状态间的互相转换

    ava中线程的状态分为6种。     1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方 […]...

  7. 吴恩达深度学习笔记(一) —— 神经网络简介 – h_z_cong

    吴恩达深度学习笔记(一) —— 神经网络简介   相关博客: 吴恩达机器学习笔记(四) —— BP神经网络 ( […]...

  8. Java多线程学习(八)线程池与Executor 框架

    本节只是简单的介绍了一下使用线程池的好处,然后花了大量篇幅介绍Executor 框架。详细介绍了Executo […]...

展开目录

目录导航