Android-Universal-Image-Loader使用demo,超详细!!!
2016-04-14 15:50
465 查看
所需要的权限:
初始化:
MainActivity:
资源文件这里不在列出
如果有不了解的地方,详见:
/article/11579710.html
<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; } } }
资源文件这里不在列出
如果有不了解的地方,详见:
/article/11579710.html
相关文章推荐
- Android中Button自定义外观-按下与放开时不同背景
- Android 修改EditText的光标颜色和背景色
- Mac 下查看 Android Studio 的 SHA1的方法
- Android各个文件夹对应的分辨率?
- Android AudioTrack详解
- Android 触摸屏(TP)问题现象分析和解决方法汇总
- Android 4.2原生支持从右到左的文字排列格式
- Android AudioRecord实现录音
- 使用Monkey测试项目
- Android MVP设计模式的最佳实现
- 了解Android资源(下)
- Android AudioManager详解
- 【Android】【组件通信】StartActivityForResult
- 了解Android资源(上)
- Android开发规范之编码规范
- [Android Studio系列(四)] 自定义gradle变量
- Android开发中图片的三级缓存策略
- Android AsyncPlayer
- Android Studio生成get,set,tostring,构造函数
- android 中组件继承关系图,一目了然