Android知识点5-Universal_image_loader加载网络图片

开源框架的使用,使我们更快的开发,增加了效率,今天就来学习一下Universal_image_loader的用法。

转载请标明出处:http://blog.csdn.net/Bingsman/article/details/48246095

首先,去github上下载所需要的jar包,下载地址:https://github.com/nostra13/Android-Universal-Image-Loader
接着就是搭配环境了
1-将下载的jar包放到工程的lib包,并创建一个显示图片的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

2-添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>

3-初始化配置有两种方法
(1)是默认配置(都是在onCreate方法中操作)

// 默认配置
ImageLoaderConfiguration configuration =ImageLoaderConfiguration.createDefault(this);
//初始化
ImageLoader.getInstance().init(configuration);

(2)自己设置(一般项目都是自己配置)

// 自己配置
        File cacheDir = StorageUtils.getCacheDirectory(MainActivity.this); // 缓存文件夹路径
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(
                MainActivity.this)
                .memoryCacheExtraOptions(480, 800)
                // default = device screen dimensions 内存缓存文件的最大长宽
                .diskCacheExtraOptions(480, 800, null)
                // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
                .taskExecutor(null)
                .taskExecutorForCachedImages(null)
                .threadPoolSize(3)
                // default 线程池内加载的数量
                .threadPriority(Thread.NORM_PRIORITY - 2)
                // default 设置当前线程的优先级
                .tasksProcessingOrder(QueueProcessingType.FIFO)
                // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
                // 可以通过自己的内存缓存实现
                .memoryCacheSize(2 * 1024 * 1024)
                // 内存缓存的最大值
                .memoryCacheSizePercentage(13)
                // default
                .diskCache(new UnlimitedDiskCache(cacheDir))
                // default 可以自定义缓存路径
                .diskCacheSize(50 * 1024 * 1024)
                // 50 Mb sd卡(本地)缓存的最大值
                .diskCacheFileCount(100)
                // 可以缓存的文件数量
                // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new
                // Md5FileNameGenerator())加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .imageDownloader(new BaseImageDownloader(MainActivity.this)) // default
                .imageDecoder(new BaseImageDecoder(false)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs() // 打印debug log
                .build(); // 开始构建
//初始化
        ImageLoader.getInstance().init(configuration);

4-配置加载图片的选项

DisplayImageOptions options = new DisplayImageOptions.Builder()
        .showImageOnLoading(R.drawable.default) // 默认图片
        .showImageForEmptyUri(R.drawable.empty) // resource or drawable
        .showImageOnFail(R.drawable.error) // resource or drawable
        .resetViewBeforeLoading(false)  // default
        .delayBeforeLoading(1000)
        .cacheInMemory(false) // default
        .cacheOnDisk(false) // default
        .preProcessor(...)
        .postProcessor(...)
        .extraForDownloader(...)
        .considerExifParams(false) // default
        .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default
        .bitmapConfig(Bitmap.Config.ARGB_8888) // default
        .decodingOptions(...)
        .displayer(new SimpleBitmapDisplayer()) // default
        .handler(new Handler()) // default
        .build();

5-加载方式有
(1)loadimage()加载图片–ImageLoadingListener加载

//百度随便找一张图片就行
String imageUrl = "http://a.hiphotos.baidu.com/image/h%3D200/sign="
                + "af9259bf03082838770ddb148898a964/6159252dd42a2834bc76c4ab5fb5c9ea14cebfba.jpg";

             //显示图片的配置  
        DisplayImageOptions options = new DisplayImageOptions.Builder()  
                .showImageOnLoading(R.drawable.default)  
                .showImageOnFail(R.drawable.erron)  
                .cacheInMemory(true)   //缓存机制
                .cacheOnDisk(true)  
                .bitmapConfig(Bitmap.Config.RGB_565)  
                .build();  

        //加载图片第一种方式:loadimage()--ImageLoadingListener加载图片

        ImageLoader.getInstance().loadImage(imageUrl,
                new ImageLoadingListener() {

                    @Override
                    public void onLoadingCancelled(String arg0, View arg1) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onLoadingComplete(String arg0, View arg1,
                            Bitmap bm) {
                        // TODO Auto-generated method stub
                        imageView.setImageBitmap(bm);
                    }
                    @Override
                    public void onLoadingFailed(String arg0, View arg1,
                            FailReason arg2) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onLoadingStarted(String arg0, View arg1) {
                        // TODO Auto-generated method stub
                    }
                });

(2)loadimage()加载图片–SimpleImageLoadingListener加载(使用的是缺省适配器模式)

//加载图片第一种方式:loadimage()--SimpleImageLoadingListener加载图片
ImageLoader.getInstance().loadImage(imageUrl, new SimpleImageLoadingListener(){

            @Override
            public void onLoadingComplete(String imageUri, View view,
                    Bitmap loadedImage) {
                super.onLoadingComplete(imageUri, view, loadedImage);
                imageView.setImageBitmap(loadedImage);
            }

        });

(3)displayImage()加载图片

//显示图片的配置  
        DisplayImageOptions options = new DisplayImageOptions.Builder()  
                .showImageOnLoading(R.drawable.ic_launcher)  
                .showImageOnFail(R.drawable.ic_launcher)  
                .cacheInMemory(true)  
                .cacheOnDisk(true)  
                .bitmapConfig(Bitmap.Config.RGB_565)  
                .build(); 

         ImageLoader.getInstance().displayImage(imageUrl, imageView, options);

6-一些额外设置

//图片大小
ImageSize imageView= new ImageSize(200, 200);  
 //显示图片的配置  
DisplayImageOptions options = new DisplayImageOptions.Builder()  
                .showImageOnLoading(R.drawable.default)  
                .showImageOnFail(R.drawable.erron)  
                .cacheInMemory(true)   //缓存机制
                .cacheOnDisk(true)  
                .bitmapConfig(Bitmap.Config.RGB_565)  
                .build();          
ImageLoader.getInstance().loadImage(imageUrl, imageView,options, new SimpleImageLoadingListener()……)

运行结果
这是根据网上资料总结,如有雷同,纯属巧合,不喜勿喷,谢谢合作

源码点击下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记住我的名字啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值