您的位置:首页 > 其它

ImageLoder的简单使用

2015-08-27 11:47 399 查看
imageLoder是一个开源的第三方库,使用它我们可以很容易的实现图片的异步加载,可以到这里下载打开链接 imageLoder的jar包。下面通过代码的说明一下ImageLoader的使用。

先看一下实现的效果图:



上代码:



ListViewActivity

package com.example.mycsdndemo;

import java.util.List;
import java.util.Map;

import com.example.adapter.ListViewItemAdapter;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class ListViewActivity extends Activity {

private ListView listView;
private List<Map<String, Object>> datas;
private ListViewItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
listView = (ListView)findViewById(R.id.listview);
datas = DateUtils.getDates();
adapter = new ListViewItemAdapter(ListViewActivity.this, datas);
listView.setAdapter(adapter);
}
}


DataUtils

package com.example.mycsdndemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DateUtils {

private static String[] paths = new String[] {
"http://img.ptcms.csdn.net/article/201508/18/55d314de1b7e9_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/19/55d402f5625ce_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/19/55d42af31c5bc_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/21/55d688d8426b6_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/21/55d723d9dbbce_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/24/55dab0e5b56b3_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/25/55dc2f76a81b6_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/25/55dc490d979af_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/26/55dd63c91be2c_thumb.jpg",
"http://img.ptcms.csdn.net/article/201508/26/55dd85ac719f8_thumb.jpg" };

public static List<Map<String, Object>> getDates() {
List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
for (int i = 0; i < paths.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("img_url", paths[i]);
map.put("item", "item" + (i + 1));
datas.add(map);
}

return datas;
/**

*/
}
}


ListViewItemAdapter

package com.example.adapter;

import java.util.List;
import java.util.Map;

import com.example.mycsdndemo.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ListViewItemAdapter extends BaseAdapter {

Context context;
LayoutInflater inflater;
List<Map<String, Object>> datas;

/**
*
* 采用ImageLoader进行图片加载
*/
private ImageLoader imageLoader = ImageLoader.getInstance();  //imageLoder采用单例模式进行设计
private DisplayImageOptions options;  //加载图片的时的选项

public ListViewItemAdapter(Context context, List<Map<String, Object>> datas) {
this.context = context;
this.datas = datas;
inflater = LayoutInflater.from(context);

//1.完成ImageLoaderConfiguration的设置
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(context);
//2.对图片加载的显示选项进行设置
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.icon_load) //设置加载过程中显示的图片
.showImageForEmptyUri(R.drawable.icon_default) //当图片URL为空时 所显示的图片
.showImageOnFail(R.drawable.icon_default) //加载出现错误的时候显示的图片
.cacheInMemory() //默认不缓存到 内存
.cacheOnDisc() //默认不缓存到SD卡
.displayer(new RoundedBitmapDisplayer(10))//设置图片显示图片为圆角,圆角的半径
.build();
//3.使用ImageLoaderConfiguration对ImageLoader进行初始化
imageLoader.init(configuration);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return datas.size();
}

@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 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.listview_item, parent,false);
holder.img =(ImageView) convertView.findViewById(R.id.listview_item_img);
holder.text = (TextView) convertView.findViewById(R.id.listview_item_text);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
holder.text.setText(datas.get(position).get("item").toString());

//图片加载过程中,不加监听事件
//	imageLoader.displayImage(datas.get(position).get("img_url").toString(), holder.img, options);

//图片加载过程中加监听事件,监听事件继承SimpleImageLoadingListener,共有四个方法,在不同情况下执行
imageLoader.displayImage(datas.get(position).get("img_url").toString(), holder.img, options,new MyImageLoaderListener());
return convertView;
}

}
class MyImageLoaderListener extends SimpleImageLoadingListener{
@Override
public void onLoadingStarted(String imageUri, View view) {
// TODO Auto-generated method stub
super.onLoadingStarted(imageUri, view);
System.out.println();
}

@Override
public void onLoadingCancelled(String imageUri, View view) {
// TODO Auto-generated method stub
super.onLoadingCancelled(imageUri, view);
}

@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// TODO Auto-generated method stub
super.onLoadingComplete(imageUri, view, loadedImage);
}

@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
// TODO Auto-generated method stub
super.onLoadingFailed(imageUri, view, failReason);
}
}
class ViewHolder {
public ImageView img;
public TextView text;
}


贴出了部分代码,布局很简单,没有贴出。ImageLoader的使用我已经在ListViewItemAdapter做了注释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: