android Android-Universal-imageloader 图片加载

1、导入方式添加jar包方式不说,这里通过添加依赖的方式

 implementation'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

2、添加权限

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

3、Application中初始化

//第一种是创建默认的加载

    //创建默认的ImageLoaderConfiguration
    ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(this);
    //初始化ImageLoader
    ImageLoader.getInstance().init(configuration);



      //第二种是自定义加载
        //自定义加载第三方图片样式
//        DisplayImageOptions options = new DisplayImageOptions.Builder()
//                .showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片
//                .showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片
//                .showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片
//                .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位
//                .delayBeforeLoading(200)  // 下载前的延迟时间
//                .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中
//                .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中
//                .considerExifParams(false) // default
//                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
//                .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
//                //                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)
//                .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间
//                //                .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
//                .handler(new Handler()) // default
//                .build();
//
//        //设置图片缓存路径
//        File cacheDir = StorageUtils.getCacheDirectory(this);
//        //自定义ImageLoaderConfiguration配置
//        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
//                .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高
//                //                .diskCacheExtraOptions(480, 800, null)  // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个
//                .threadPoolSize(4) // 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))
//                .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值
//                //                .diskCacheFileCount(100)  // 可以缓存的文件数量
//                // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
//                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
//                //                 .connectTimeout (5 s), readTimeout (30 s)  //超时时间
//                //第二个参数:连接超时时间,第三个参数:读取超时时间
//                .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))
//                .defaultDisplayImageOptions(options)
//                .writeDebugLogs() // 打印debug log
//                .build(); //开始构建
//
//        //初始化ImageLoader
//        ImageLoader.getInstance().init(configuration);

4、Activity中使用

package com.example.administrator.universal_image_loade;

import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.download.ImageDownloader;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;

public class MainActivity extends AppCompatActivity {
    private String url;
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化组件
        imageView= (ImageView) findViewById(R.id.lv);


        //初始化图片加载框架
        final ImageLoader imageLoader = ImageLoader.getInstance();
        url = "http://www.chinagirlol.cc/data/attachment/forum/201412/03/233758hw7o7h08kkozkcwi.jpg";
        //第一种加载方式  需要个url图片地址
        //imageLoader.getInstance().displayImage("http://img5.imgtn.bdimg.com/it/u=3218480149,1328367548&fm=21&gp=0.jpg",imageView);

      //第二种加载方式
//        imageLoader.displayImage(url, imageView, new ImageLoadingListener() {
//            @Override  //刚开始加载的图片
//            public void onLoadingStarted(String s, View view) {
//                imageView.setImageResource(R.drawable.ic_launcher_background);
//            }
//
//            @Override //加载失败图片
//            public void onLoadingFailed(String s, View view, FailReason failReason) {
//
//            }
//
//            @Override//加载完成的图片
//            public void onLoadingComplete(String s, View view, Bitmap bitmap) {
//                imageView.setImageBitmap(bitmap);
//            }
//
//            @Override//取消加载
//            public void onLoadingCancelled(String s, View view) {
//
//            }
//        });
        //第三种加载方式  设固定宽高
        //加载本地

        ImageSize imageSize=new ImageSize(140,160);
        imageLoader.loadImage(url,imageSize,new SimpleImageLoadingListener(){
            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                super.onLoadingComplete(imageUri, view, loadedImage);
                imageView.setImageBitmap(loadedImage);
            }
        });

       //加载本地的照片ImageDownloader.Scheme.FILE.wrap包装下
//        String Burl="/mnt/sdcard/DCIM/1.jpg";
//        imageLoader.displayImage(ImageDownloader.Scheme.FILE.wrap(Burl),imageView);
    }

}

5、一个封装好的工具类

package com.example.administrator.universal_image_loade;

import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;

public class WXHLImageLoader {

//懒汉单例
private static WXHLImageLoader wxhlImageLoader;
//获取第三方的ImageLoader
private ImageLoader imageLoader;

private WXHLImageLoader(){
    imageLoader = ImageLoader.getInstance();
}

/**
 * 单例
 * @return
 */
public static synchronized WXHLImageLoader getInstance(){
    //        return wxhlImageLoader;
    if(wxhlImageLoader == null){
        wxhlImageLoader = new WXHLImageLoader();
    }
    return wxhlImageLoader;
}

/**
 * 显示图片
 * @param imageUrl
 * @param imageView
 */
public void displayImage(String imageUrl, ImageView imageView){
    imageLoader.displayImage(imageUrl,imageView);
}

/**
 * 显示图片,带监听器的
 * @param imageUrl
 * @param imageView
 */
public void displayImage(String imageUrl, ImageView imageView,ImageLoadingListener listener){
    imageLoader.displayImage(imageUrl,imageView,listener);
}

/**
 * 加载图片,带监听器的
 * @param imageUrl
 * @param listener
 */
public void loadImage(String imageUrl, SimpleImageLoadingListener listener){
    imageLoader.loadImage(imageUrl,listener);
}

/**
 * 加载图片,带监听器的
 * @param imageUrl
 * @param listener
 */
public void loadImage(String imageUrl, int width, int height, SimpleImageLoadingListener listener){
    ImageSize targetSize = new ImageSize(width, height); // result Bitmap will be fit to this size
    imageLoader.loadImage(imageUrl,targetSize,listener);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值