加载图片的几种方式
2015-10-09 08:25
316 查看
1、volley
VolleyUtils.getLoader(context).get(datas.get(position), ImageLoader.getImageListener(
holder.iv, R.drawable.ic_launcher, android.R.drawable.ic_menu_delete));
2、NUtils
vHolder.coverImgView.setTag(imgPath);
if(imgPath.length()>10){
//存在图片路径
vHolder.coverImgView.setVisibility(View.VISIBLE);
//从SDCard读取,若不存在,再从网络中下载
Bitmap bitmap=ImageUtils.getImg(imgPath);
if(bitmap!=null){
vHolder.coverImgView.setImageBitmap(bitmap);
}else{
NUtils.get(NUtils.TYPE_IMG, imgPath, new NUtils.Callback() {
@Override
public void response(String url, byte[] bytes) {
// TODO 图片下载完成后,进行显示
ImageView imgView=(ImageView) parent.findViewWithTag(url);
if(imgView!=null){
imgView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
}
}
@Override
public boolean isCancelled(String url) {
// TODO 判断是否取消下载图片
return parent.findViewWithTag(url)==null;
}
});
3、networkImageView
requestQueue = Volley.newRequestQueue(context);
imageLoader = new ImageLoader(requestQueue,
new ImageLoader.ImageCache() {
// 参数 在没有重写 sizeOf的时候,代表 最多存10个
private LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(
20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
holder.iv.setImageUrl(datas.get(position), imageLoader);
4 ImageLoader
5\xUtils
xutils
6、Picasso
Picasso.with(context).load(path).into(holder.iv);
VolleyUtils.getLoader(context).get(datas.get(position), ImageLoader.getImageListener(
holder.iv, R.drawable.ic_launcher, android.R.drawable.ic_menu_delete));
2、NUtils
vHolder.coverImgView.setTag(imgPath);
if(imgPath.length()>10){
//存在图片路径
vHolder.coverImgView.setVisibility(View.VISIBLE);
//从SDCard读取,若不存在,再从网络中下载
Bitmap bitmap=ImageUtils.getImg(imgPath);
if(bitmap!=null){
vHolder.coverImgView.setImageBitmap(bitmap);
}else{
NUtils.get(NUtils.TYPE_IMG, imgPath, new NUtils.Callback() {
@Override
public void response(String url, byte[] bytes) {
// TODO 图片下载完成后,进行显示
ImageView imgView=(ImageView) parent.findViewWithTag(url);
if(imgView!=null){
imgView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
}
}
@Override
public boolean isCancelled(String url) {
// TODO 判断是否取消下载图片
return parent.findViewWithTag(url)==null;
}
});
3、networkImageView
requestQueue = Volley.newRequestQueue(context);
imageLoader = new ImageLoader(requestQueue,
new ImageLoader.ImageCache() {
// 参数 在没有重写 sizeOf的时候,代表 最多存10个
private LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(
20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
holder.iv.setImageUrl(datas.get(position), imageLoader);
4 ImageLoader
requestQueue = Volley.newRequestQueue(this); // 1.1 ImageLoader 创建 // 参数1 : 用于实际的网络请求 // 参数2 : ImageCache 内存缓存 imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() { // 参数 在没有重写 sizeOf的时候,代表 最多存10个 private LruCache<String, Bitmap> cache = new LruCache<>(10); @Override public Bitmap getBitmap(String url) { return cache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { cache.put(url, bitmap); } });
imageLoader.get( "https://www.baidu.com/img/bd_logo1.png", ImageLoader.getImageListener(imageView, R.drawable.ic_launcher, android.R.drawable.ic_delete) );
5\xUtils
package com.example.networkvolley; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.NetworkImageView; import com.example.utils.VolleyUtils; import com.lidroid.xutils.BitmapUtils; public class adapter extends BaseAdapter { private RequestQueue requestQueue; private ImageLoader imageLoader; private Context context; private List<String> datas; private static BitmapUtils bitmapUtils; public adapter(Context context, List<String> datas) { this.context = context; this.datas = datas; if(bitmapUtils==null) bitmapUtils=new BitmapUtils(context); bitmapUtils.configDefaultLoadingImage(R.drawable.ic_launcher); } @Override public int getCount() { // TODO Auto-generated method stub int count = 0; if (datas != null) count = datas.size(); return count; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return datas.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.item, null); holder = new ViewHolder(); holder.iv = (ImageView) convertView .findViewById(R.id.image_view); convertView.setTag(holder); } else holder = (ViewHolder) convertView.getTag(); //---------------1 /*requestQueue = Volley.newRequestQueue(context); imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() { // 参数 在没有重写 sizeOf的时候,代表 最多存10个 private LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>( 20); @Override public Bitmap getBitmap(String url) { return cache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { cache.put(url, bitmap); } });*/ //--------------2 /*VolleyUtils.getLoader(context).get(datas.get(position), ImageLoader.getImageListener( holder.iv, R.drawable.ic_launcher, android.R.drawable.ic_menu_delete));*/ /*holder.iv.setImageUrl(datas.get(position), imageLoader);*/ //---------------3 bitmapUtils.display(holder.iv, datas.get(position)); return convertView; } class ViewHolder { //NetworkImageView iv; ImageView iv; } }
xutils
6、Picasso
Picasso.with(context).load(path).into(holder.iv);
相关文章推荐
- ECS Linux开启swap(虚拟内存)
- 第四周 项目二-建立单链表算法库
- 2015-10-9 【项目1 - 建立顺序栈算法库】
- Freecms商业版 oracle添加信息时报错”转换请求无法实施或不合理”
- 第四周项目3 单链表应用(1)
- 第四周项目六-多项式求和
- 【第6周 项目1 - 建立顺序栈算法库】
- 第6周项目1 - 建立顺序栈算法库
- 洛谷P1126 机器人搬重物
- 第3周项目1 顺序表的基本运算(2)
- 第6周 项目1-建立顺序栈算法库
- 第4周实践项目2-单链表
- 第四周实践项目3--单链表应用(2)
- 类模板 与 模板类 http://www.cnblogs.com/this-543273659/archive/2011/07/21/2112358.html
- ReactiveCocoa<一>
- 项目3 -- 括号的匹配 顺序栈方法
- 开源好丑陋,需要设计师改善UI和UX
- 七年未尽之旅:中美BIT谈判
- 第4周SHH数据结构—【项目3-单链表应用(2)】
- Linux进程同步