ImageLoader的使用

来源:互联网 发布:易语言网页填表源码 编辑:程序博客网 时间:2024/06/09 13:39

ImageLoader使用

2017/10/15 18:48:20


下载地址

  • https://github.com/nostra13/Android-Universal-Image-Loader

使用

构建ImageLoader工具类

ImageLoaderUtil.java

import android.content.Context;import android.graphics.Bitmap;import android.util.Log;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.assist.QueueProcessingType;import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;import com.nostra13.universalimageloader.core.download.BaseImageDownloader;import com.nostra13.universalimageloader.utils.StorageUtils;import java.io.File;/** * Created by maohuawei on 2017/10/15. */class ImageLoaderUtil {    private static final String TAG = "ImageLoaderUtil";    public static void init(Context context) {        //缓冲文件路径        File cacheDir = StorageUtils.getCacheDirectory(context);        Log.d(TAG, "init: " + cacheDir.getPath());        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)                .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(100 * 1024 * 1024) // 100Mb sd卡(本地)缓存的最大值                .diskCacheFileCount(100)  // 可以缓存的文件数量                // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())                .imageDownloader(new BaseImageDownloader(context))                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())                .writeDebugLogs() // 打印debug log                .build(); //开始构建        //初始化        ImageLoader.getInstance().init(config);    }    public static DisplayImageOptions getDefaultOption() {        DisplayImageOptions options = new DisplayImageOptions.Builder()                .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片                .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片                .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片                .resetViewBeforeLoading(true)  // default 设置图片在加载前是否重置、复位                .cacheInMemory(true) // default  设置下载的图片是否缓存在内存中                .cacheOnDisk(true) // default  设置下载的图片是否缓存在SD卡中                .considerExifParams(true) // default                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示                .bitmapConfig(Bitmap.Config.ARGB_8888) // default 设置图片的解码类型                .displayer(new SimpleBitmapDisplayer()) // default  还可以设置圆角图片new RoundedBitmapDisplayer(20)                .build();        return options;    }}

构建MyBaseApplication

使用MyBaseApplication初始化

public class MyBaseApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        //初始化ImageLoader        ImageLoaderUtil.init(this);    }}

AndroidManifest.xml注册

注册 (在application节点下添加android.name属性)

<application    android:name=".MyBaseApplication"    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="@string/app_name"    android:roundIcon="@mipmap/ic_launcher_round"    android:supportsRtl="true"    android:theme="@style/AppTheme">    <activity android:name=".MainActivity">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity></application>

AndroidManifest.xml添加权限

添加权限

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

用法

使用

//图片地址String url = "https://www.baidu.com/img/bd_logo1.png";//设置图片 参数(网络图片地址,ImageView控件,options)ImageLoader.getInstance().displayImage(url, imageView, ImageLoaderUtil.getDefaultOption());

效果展示

效果
这里写图片描述