ImageLoader的使用
来源:互联网 发布:java中double类型运算 编辑:程序博客网 时间:2024/04/29 17:24
导入JAR包
/**
*全局变量下的使用:
*/
MyApplication代码:
import java.io.File;import com.example.imageloadertest.R;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;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.FadeInBitmapDisplayer;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import com.nostra13.universalimageloader.core.download.BaseImageDownloader;import android.app.Application;import android.graphics.Bitmap;import android.os.Environment;public class MyApplication extends Application { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this) .memoryCacheExtraOptions(480, 800) .threadPoolSize(3) // 1-5 // 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache // implementation/你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) // 缓存的文件数量 .discCache( new UnlimitedDiscCache(new File(Environment .getExternalStorageDirectory() + "/myApp/img"))) // 自定义缓存路径 // 如果设置ImageLoader的配置为全局配置的话,在构造ImageLoader实例化对象的时候,需要ImageLoaderConfiguration中 // 通过下面的这个方法,来设置全局的配置,在调用imageLoader的.displayImage时使用3个参数的方法即可,不设置为全局的配置 // 则需要的使用的地方,进行局部的配置设置,使用4个参数的displayImage()方法 // 参数类型为,DisplayImageOptions .defaultDisplayImageOptions(options()) .imageDownloader( new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) .writeDebugLogs() // Remove for release app .build();// 开始构建 // 创建ImageLoader的实例化对象 ImageLoader.getInstance().init(config); } private DisplayImageOptions options() { DisplayImageOptions options; options = new DisplayImageOptions.Builder() .showImageOnFail(R.drawable.ic_launcher) // 设置图片下载失败默认 .showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空的时候显示的图片 .showImageOnLoading(R.drawable.ic_launcher)// 下载中 .cacheInMemory(true)// 设置下载的图片是否缓存在内存中 .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中 .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型// .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间 .build();// 构建完成 return options; }}
MainActivity代码
public class MainActivity extends Activity { private ListView lv; List<Result> list; VO vo; ImageLoader loader = ImageLoader.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); new Thread() { @Override public void run() { try { HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet( "http://apis.juhe.cn/catering/query?key=d90b49e59139d294875f6220633a3643&lng=121.538123&lat=31.677132&radius=2000"); HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == 200) { InputStream stream = response.getEntity().getContent(); Gson gson = new Gson(); vo = gson.fromJson(new InputStreamReader(stream, "UTF-8"), new TypeToken<VO>() { }.getType()); // list = vo.result; Log.i("TAG", vo.toString()); Message message = handler.obtainMessage(1, vo); handler.sendMessage(message); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { vo = (VO) msg.obj; // 全局变量 // MyAdapter adapter = new MyAdapter(MainActivity.this, // vo.result); lv.setAdapter(adapter); } } };}
MyAdapter代码
public class MyAdapter extends BaseAdapter { private Context context; private List<Result> list; private ImageLoader loader = ImageLoader.getInstance(); static private List<String> urlList = Collections .synchronizedList(new LinkedList<String>());; public MyAdapter(Context context, List<Result> list) { super(); this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int arg0, View view, ViewGroup arg2) { view = LayoutInflater.from(context).inflate(R.layout.item_layout, null); TextView title = (TextView) view.findViewById(R.id.title); TextView price = (TextView) view.findViewById(R.id.price_show); ImageView img = (ImageView) view.findViewById(R.id.photo_show); title.setText(list.get(arg0).name); price.setText(list.get(arg0).address); // 全局加载 (一) loader.displayImage(list.get(arg0).photos, img); /** * 全局加载 (二) */ loader.displayImage(list.get(arg0).photos, img, new ImageLoadingListener() { @Override public void onLoadingStarted(String arg0, View arg1) { } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { if (arg2 != null) { boolean urlBoolean = urlList.contains(arg0); if (!urlBoolean) { urlList.add(arg0); } } } @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { } @Override public void onLoadingCancelled(String arg0, View arg1) { } }); return view; }}
/**
*局部变量下的使用
**/
public class MyApplication extends Application { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( this) .memoryCacheExtraOptions(480, 800) .threadPoolSize(3) // 1-5 // 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache // implementation/你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) // 缓存的文件数量 .discCache( new UnlimitedDiscCache(new File(Environment .getExternalStorageDirectory() + "/myApp/img"))) // 自定义缓存路径 // 如果设置ImageLoader的配置为全局配置的话,在构造ImageLoader实例化对象的时候,需要ImageLoaderConfiguration中 // 通过下面的这个方法,来设置全局的配置,在调用imageLoader的.displayImage时使用3个参数的方法即可,不设置为全局的配置 // 则需要的使用的地方,进行局部的配置设置,使用4个参数的displayImage()方法 // 参数类型为,DisplayImageOptions .imageDownloader( new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) .writeDebugLogs() // Remove for release app .build();// 开始构建 // 创建ImageLoader的实例化对象 ImageLoader.getInstance().init(config); }}
二。mainactivity代码
public class MainActivity extends Activity { private ListView lv; List<Result> list; VO vo; ImageLoader loader = ImageLoader.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); new Thread() { @Override public void run() { try { HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet( "http://apis.juhe.cn/catering/query?key=d90b49e59139d294875f6220633a3643&lng=121.538123&lat=31.677132&radius=2000"); HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == 200) { InputStream stream = response.getEntity().getContent(); Gson gson = new Gson(); vo = gson.fromJson(new InputStreamReader(stream, "UTF-8"), new TypeToken<VO>() { }.getType()); // list = vo.result; Log.i("TAG", vo.toString()); Message message = handler.obtainMessage(1, vo); handler.sendMessage(message); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.start(); } /** * 局部变量 * * @return */ private DisplayImageOptions options() { DisplayImageOptions options; options = new DisplayImageOptions.Builder() .showImageOnFail(R.drawable.ic_launcher) // 设置图片下载失败默认 .showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空的时候显示的图片 .showImageOnLoading(R.drawable.ic_launcher)// 下载中 .cacheInMemory(true)// 设置下载的图片是否缓存在内存中 .cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中 .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型// .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位 .displayer(new RoundedBitmapDisplayer(20))// 是否设置为圆角,弧度为多少 .displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间 .build();// 构建完成 return options; } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { vo = (VO) msg.obj; // 局部变量 MyAdapter adapter = new MyAdapter(MainActivity.this, vo.result,options()); lv.setAdapter(adapter); } } };}
MyAdapter代码
public class MyAdapter extends BaseAdapter { private Context context; private List<Result> list; private ImageLoader loader = ImageLoader.getInstance(); static private List<String> urlList = Collections .synchronizedList(new LinkedList<String>());; private DisplayImageOptions options; public MyAdapter(Context context, List<Result> list) { super(); this.context = context; this.list = list; } public MyAdapter(Context context, List<Result> list, DisplayImageOptions options) { super(); this.context = context; this.list = list; this.options = options; } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int arg0, View view, ViewGroup arg2) { view = LayoutInflater.from(context).inflate(R.layout.item_layout, null); TextView title = (TextView) view.findViewById(R.id.title); TextView price = (TextView) view.findViewById(R.id.price_show); ImageView img = (ImageView) view.findViewById(R.id.photo_show); title.setText(list.get(arg0).name); price.setText(list.get(arg0).address); /** * 局部变量 */ loader.displayImage(list.get(arg0).getPhotos(), img, options, new ImageLoadingListener() { @Override public void onLoadingStarted(String arg0, View arg1) { // TODO Auto-generated method stub } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { // TODO Auto-generated method stub } @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { if (arg2 != null) { boolean urlBoolean = urlList.contains(arg0); if (!urlBoolean) { urlList.add(arg0); } } } @Override public void onLoadingCancelled(String arg0, View arg1) { // TODO Auto-generated method stub } }); return view; }}
AndroidManifest.xml配置
1、加载权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2、application设置如下
android:name="com.example.application.MyApplication"
0 0
- ImageLoader的使用
- ImageLoader的使用
- 开源库ImageLoader的使用
- ImageLoader的基本使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的简单使用
- ImageLoader的基本使用
- imageloader的简单使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的配置使用
- ImageLoader的使用
- ImageLoader的使用
- ImageLoader的简单使用
- imageloader的使用
- ImageLoader的简单使用
- 线程中的wait和notify方法
- hdu2046 骨牌铺方格 (菲波那切数列)
- 黑马程序员----集合3(Map、工具类)
- iOS实现导航栏全透明效果
- 信息检索评价指标:正确率,召回率和F值
- ImageLoader的使用
- 提升网站性能开发的10个技巧
- php curl 报错:SSL certificate problem: unable to get local issuer certificate
- 图像局部特征学习(笔记1之边缘检测)
- sqlite 数据库更新
- Java基础学习总结——Java对象的序列化和反序列化
- Zero Copy初探
- initWithFrame 和 initWithCoder 区别
- UVa 895 - Word Problem