ImageLoder的简单使用
2015-08-27 11:47
399 查看
imageLoder是一个开源的第三方库,使用它我们可以很容易的实现图片的异步加载,可以到这里下载打开链接 imageLoder的jar包。下面通过代码的说明一下ImageLoader的使用。
先看一下实现的效果图:
上代码:
ListViewActivity
DataUtils
ListViewItemAdapter
贴出了部分代码,布局很简单,没有贴出。ImageLoader的使用我已经在ListViewItemAdapter做了注释。
先看一下实现的效果图:
上代码:
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做了注释。
相关文章推荐
- java-captcha实现验证码(二)
- import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport;这两行报错
- Cmake——CMake+SVN或Hg生成版本号
- 每个人都应该懂点函数式编程
- 【学习笔记2】Logistic Regression
- C语言中正切的相关函数总结
- demo2 JAVA变量
- 手持移动端特殊链接:打电话,发短信,发邮件
- 【Memphis】非旋转Treap及可持久化[Merge,Split]
- 3D动画
- oldssoj2676B(环)
- Download pdf file from JAX-RS
- C++ Jsoncpp源代码编译与解析Json
- 安卓笔记
- iOS:NSBundle的具体介绍
- 如何使用Xmanager及VNC登录远程桌面
- 字符串组合问题(无重复)
- Ruby第三天作业
- php调用短信接口,php发送短信接口
- Google Earth For Javascript 谷歌地球删除所有标记