Android-Universal-Image-Loader使用demo,超详细!!!
来源:互联网 发布:ubuntu 画图工具 编辑:程序博客网 时间:2024/05/16 15:40
- 所需要的权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 初始化:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); initImageLoader(getApplicationContext()); } public static void initImageLoader(Context context) { // 缓存文件的目录 File cacheDir = StorageUtils.getOwnCacheDirectory(context, "mycache");//sdcard目录 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).memoryCacheExtraOptions(480, 800) // max // height,即保存的每个缓存文件的最大长宽 .threadPoolSize(3) // 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() // .discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的URI名称用MD5 加密 .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache // implementation/你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .discCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .tasksProcessingOrder(QueueProcessingType.LIFO) // 由原先的discCache -> diskCache .discCache(new UnlimitedDiscCache(cacheDir)) // 自定义缓存路径 .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间 .writeDebugLogs() // Remove for release app .build(); // 全局初始化此配置 ImageLoader.getInstance().init(config); }}
- MainActivity:
package com.example.imageloader;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.assist.FailReason;import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;import com.nostra13.universalimageloader.core.assist.ImageLoadingProgressListener;public class MainActivity extends Activity { private GridView gridView; private List<String> urlList = new ArrayList<String>(); private ImageLoader imageLoader; private DisplayImageOptions options; // 设置图片显示相关参数 private String uri1 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3063552411,3030228420&fm=111&gp=0.jpg"; private String uri2 = "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2546610023,3120506294&fm=111&gp=0.jpg"; private String uri3 = "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=4236942158,2307642402&fm=116&gp=0.jpg"; private String uri4 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1589956140,1606448699&fm=116&gp=0.jpg"; private String uri5 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1017606633,46849118&fm=111&gp=0.jpg"; private String uri6 = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1861283441,1807800896&fm=111&gp=0.jpg"; private String uri7 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2033765348,1346395611&fm=116&gp=0.jpg"; private String uri8 = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=731307697,3873909574&fm=111&gp=0.jpg"; private String uri9 = "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=4271053251,2424464488&fm=116&gp=0.jpg"; private String uri10 = "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=161888459,1712714238&fm=116&gp=0.jpg"; private String uri11 = // 改路径错误,为了测试加载失败的时候显示的图片 "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/=2189035302,1073444789&fm=111&gp=0.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); urlList.add(uri1); urlList.add(uri2); urlList.add(uri3); urlList.add(uri4); urlList.add(uri5); urlList.add(uri6); urlList.add(uri7); urlList.add(uri8); urlList.add(uri9); urlList.add(uri10); urlList.add(uri11); gridView = (GridView) findViewById(R.id.gridView); gridView.setAdapter(new GridAdapter(getApplicationContext())); imageLoader = ImageLoader.getInstance(); // 使用DisplayImageOptions.Builder()创建DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_stub) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.drawable.bg_img) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.bg_img) // 设置图片加载或解码过程中发生错误显示的图片 .cacheInMemory(true) // 设置下载的图片是否缓存在内存中 .cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中 // .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片 .build(); // 构建完成 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } class GridAdapter extends BaseAdapter { private Context context; public GridAdapter(Context context) { this.context = context; } @Override public int getCount() { return urlList.size(); } @Override public Object getItem(int position) { return urlList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.img_item, null); viewHolder = new ViewHolder(); viewHolder.imgItem = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // !!!加载图片 imageLoader.displayImage(urlList.get(position), viewHolder.imgItem, options, new ImageLoadingListener() { // 该参数可选 @Override public void onLoadingStarted(String arg0, View arg1) { // 开始加载 } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { // 加载失败 } @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { // 加载完成 } @Override public void onLoadingCancelled(String arg0, View arg1) { // 加载取消 } }, new ImageLoadingProgressListener() { // 该参数可选 @Override public void onProgressUpdate(String arg0, View arg1, int arg2, int arg3) { // 更新进度条 } }); return convertView; } class ViewHolder { ImageView imgItem; } }}
资源文件这里不在列出
如果有不了解的地方,详见:
http://blog.csdn.net/wuqingyidongren/article/details/51135978
1 0
- Android-Universal-Image-Loader使用demo,超详细!!!
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)提供Android studio 的DEMO
- Android Universal Image Loader 源码分析-超详细,超全面
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- [置顶] Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- java.lang.NumberFormatException: For input string: "on"
- vs开发工具一个统计行数的正则使用方法
- 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
- iOS UItextField去除空格
- SMTP结构及原理
- Android-Universal-Image-Loader使用demo,超详细!!!
- linux网络编程之shutdown() 与 close()函数详解
- intellij idea 2016破解方法
- Sift与Surf的区别
- 几种常用的设计模式介绍
- NOJ 1011 大整数加法
- android弹出窗口的实现(PopupWindow)
- tomcat生产集群环境性能问题
- 互联网协议入门(一)