Android-Universal-Image-Loader使用demo,超详细!!!

来源:互联网 发布:ubuntu 画图工具 编辑:程序博客网 时间:2024/05/16 15:40
  1. 所需要的权限:
 <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 初始化:
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);    }}
  1. 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
原创粉丝点击