您的位置:首页 > 其它

ImageLoader工具类

2016-05-23 08:23 429 查看
jar包地址--------







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




import android.content.Context;

import android.graphics.Bitmap;

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.ImageLoaderConfiguration.Builder;

import com.nostra13.universalimageloader.core.assist.ImageScaleType;

import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;

import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

public class ImageLoaderUtils {

    /**

     * 初始化ImageLoaderConfiguration 这个可以只做简单的初始化,此方法建议在 Application中进行初始化

     *

     * @param context

     */

    public static void initConfiguration(Context context) {

        Builder configuration = new ImageLoaderConfiguration.Builder(context);

        // --------------------------------------------------------------------

        // 本段代码,如果是测试使用时,可以不添加,不影响ImageLoader的正常使用

         configuration.memoryCacheExtraOptions(480, 800)

         // default = device screen dimensions

         // 缓存到磁盘中的图片宽高

         .diskCacheExtraOptions(480, 800, null)

         // .taskExecutor(null)

         // .taskExecutorForCachedImages()

         .threadPoolSize(3)

         // default 线程优先级

         .threadPriority(Thread.NORM_PRIORITY - 2)

         // default

         .tasksProcessingOrder(QueueProcessingType.FIFO)

         // // default设置在内存中缓存图像的多种尺寸

         // 加载同一URL图片时,imageView从小变大时,从内存缓存中加载

         .denyCacheImageMultipleSizesInMemory()

         // 超过设定的缓存大小时,内存缓存的清除机制

         .memoryCache(new LruMemoryCache(2 * 1024 * 1024))

         // 内存的一个大小

         .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)

         // default 将图片信息缓存到该路径下

         // default 磁盘缓存的大小

         .diskCacheSize(50 * 1024 * 1024)

         // 磁盘缓存文件的个数

         .diskCacheFileCount(100)

         // 磁盘缓存的文件名的命名方式//一般使用默认值 (获取文件名称的hashcode然后转换成字符串)或MD5 new

         // Md5FileNameGenerator()源文件的名称同过md5加密后保存

         .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())

         // 设置默认的图片加载

         // 使用默认的图片解析器

         .imageDecoder(new BaseImageDecoder(true)) // default

         .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) //

         .writeDebugLogs();

        // ---------------------------------------------------------------------

        ImageLoader.getInstance().init(configuration.build());

    }

    /**

     * 初始化DisplayImageOptions

     *

     * @param context

     * @return

     */

    public static DisplayImageOptions initOptions() {

        DisplayImageOptions options = new DisplayImageOptions.Builder()

        // 设置图片在下载期间显示的图片

                .showImageOnLoading(R.drawable.ic_launcher)

                // 设置图片Uri为空或是错误的时候显示的图片

                .showImageOnFail(R.drawable.ic_launcher)

                // 设置下载的图片是否缓存在内存中

                .cacheInMemory(true)

                // 设置下载的图片是否缓存在SD卡中

                .cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565)

                // --------------------------------------------------------------------

                // 如果您只想简单使用ImageLoader这块也可以不用配置

                // 是否考虑JPEG图像EXIF参数(旋转,翻转)

                .considerExifParams(true)

                // 设置图片以如何的编码方式显示

                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)

                // 设置图片的解码类型//

                .bitmapConfig(Bitmap.Config.RGB_565)

                // 设置图片的解码配置

                // .decodingOptions(options)

                // .delayBeforeLoading(int delayInMillis)//int

                // delayInMillis为你设置的下载前的延迟时间

                // 设置图片加入缓存前,对bitmap进行设置

                // .preProcessor(BitmapProcessor preProcessor)

                // 设置图片在下载前是否重置,复位

                .resetViewBeforeLoading(true)

                // 是否设置为圆角,弧度为多少————如果显示圆形图片则传入参数(new CircleBitmapDisplayer())

                .displayer(new RoundedBitmapDisplayer(20))

                // 是否图片加载好后渐入的动画时间

                .displayer(new FadeInBitmapDisplayer(100))

                // 构建完成

                // -------------------------------------------------------------------

                .build();

        return options;

    }

}




<span style="font-size:18px;"><code class="language-bash hljs  has-numbering">——————————————————————————————————————————
</code></span><p>关于调用,注意一下事项:</p><ul><li>建议在Application中调用initConfiguration方法</li></ul><pre name="code" class="prettyprint"><code class="language-bash hljs  has-numbering">public class MyApplication extends Application {

@Override
public void <span class="hljs-function"><span class="hljs-title">onCreate</span></span>() {
super.onCreate();
ImageLoaderUtils.initConfiguration(getApplicationContext());
}
}
</code>


配置Application,在清单文件中的Application节点下,配置name属性
<code class="language-bash hljs  has-numbering">android:name=<span class="hljs-string">"com.example.demo.MyApplication"
——————
</span></code>

在要使用ImageLoader的类中调用initOption的方法
<code class="language-bash hljs  has-numbering">//将options转成成员变量
options = ImageLoaderUtils.initOptions();</code>

当使用ImageLoader时,就用如下方法
<code class="language-bash hljs  has-numbering">@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(MainActivity.this);
ImageLoader.getInstance().displayImage(
imagethumburls[position], imageView, options);
<span class="hljs-keyword">return</span> imageView;
}</code>

配置权限
<code class="language-bash hljs  has-numbering">     <uses-permission android:name=<span class="hljs-string">"android.permission.
a1ef
INTERNET"</span>/>
<uses-permission android:name=<span class="hljs-string">"android.permission.WRITE_EXTERNAL_STORAGE"</span>/> <uses-permission android:name=<span class="hljs-string">"android.permission.READ_EXTERNAL_STORAGE"</span>/></code>

清除缓存的方法

//完全退出程序时,可以不调用

ImageLoader.getInstance().clearDiskCache();//清除磁盘缓存

ImageLoader.getInstance().clearMemoryCache();//清除内存缓存


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息