Android Imageloader的配置的实现代码

Android Imageloader的配置的实现代码

  ImageLoader 优点

(1) 支持下载进度监听

(2) 可以在 View 滚动中暂停图片加载

通过 PauseOnScrollListener 接口可以在 View 滚动中暂停图片加载。

(3) 默认实现多种内存缓存算法 这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法,如 Size

最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等。

(4) 支持本地缓存文件名规则定义

实现代码:


/**
 * 初始化ImageLoader
 */
public static void initImageLoader(Context context) {
  File cacheDir = StorageUtils.getOwnCacheDirectory(context,
      "bee_k77/Cache");// 获取到缓存的目录地址
  Log.e("cacheDir", cacheDir.getPath());
  // 创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数
  ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
      context)
      // max width, max height,即保存的每个缓存文件的最大长宽
      .memoryCacheExtraOptions(480, 800)
      // Can slow ImageLoader, use it carefully (Better don't use it)设置缓存的详细信息,最好不要设置这个
/        .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null)
      // 线程池内加载的数量
      .threadPoolSize(3)
      // 线程优先级
      .threadPriority(Thread.NORM_PRIORITY - 2)
      /*
       * When you display an image in a small ImageView
       * and later you try to display this image (from identical URI) in a larger ImageView
       * so decoded image of bigger size will be cached in memory as a previous decoded image of smaller size.
       * So the default behavior is to allow to cache multiple sizes of one image in memory.
       * You can deny it by calling this method:
       * so when some image will be cached in memory then previous cached size of this image (if it exists)
       *  will be removed from memory cache before.
       */
/        .denyCacheImageMultipleSizesInMemory() 

      // You can pass your own memory cache implementation你可以通过自己的内存缓存实现
      // .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
      // .memoryCacheSize(2 * 1024 * 1024)
      //硬盘缓存50MB
      .diskCacheSize(50 * 1024 * 1024)
       //将保存的时候的URI名称用MD5
      .diskCacheFileNameGenerator(new Md5FileNameGenerator())
      // 加密
       .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())//将保存的时候的URI名称用HASHCODE加密
      .tasksProcessingOrder(QueueProcessingType.LIFO)
       .diskCacheFileCount(100) //缓存的File数量
      .diskCache(new UnlimitedDiscCache(cacheDir))// 自定义缓存路径
      // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
      // .imageDownloader(new BaseImageDownloader(context, 5 * 1000,
      // 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
      .writeDebugLogs() // Remove for release app
      .build();
  // Initialize ImageLoader with configuration.
  ImageLoader.getInstance().init(config);// 全局初始化此配置
}

Option类

package com.topnews.config; 

import android.graphics.Bitmap; 

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.topnews.R; 

public class Options {
  /**
   * 新闻列表中用到的图片加载配置
   */
  public static DisplayImageOptions getListOptions() {
    DisplayImageOptions options = new DisplayImageOptions.Builder()
    // 设置图片在下载期间显示的图片
        .showImageOnLoading(R.drawable.ic_stub)
        // 设置图片Uri为空或是错误的时候显示的图片
        .showImageForEmptyUri(R.drawable.ic_stub)
        // 设置图片加载/解码过程中错误时候显示的图片
        .showImageOnFail(R.drawable.ic_error)
        // 设置下载的图片是否缓存在内存中
        .cacheInMemory(false)
        // 设置下载的图片是否缓存在SD卡中
        .cacheOnDisc(true)
        // 保留Exif信息
        .considerExifParams(true)
        // 设置图片以如何的编码方式显示
        .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
        // 设置图片的解码类型
        .bitmapConfig(Bitmap.Config.RGB_565)
        // .decodingOptions(android.graphics.BitmapFactory.Options
        // decodingOptions)//设置图片的解码配置
        .considerExifParams(true)
        // 设置图片下载前的延迟
        .delayBeforeLoading(100)// int
        // delayInMillis为你设置的延迟时间
        // 设置图片加入缓存前,对bitmap进行设置
        // .preProcessor(BitmapProcessor preProcessor)
        .resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
        // .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角,弧度为多少
        .displayer(new FadeInBitmapDisplayer(100))// 淡入
        .build();
    return options;
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android开发之ImageLoader本地缓存

    ImageLoader是一个图片缓存的开源库,提供了强大的图片缓存机制,很多开发者都在使用,今天给大家介绍Android开发之ImageLoader本地缓存,具体内容如下所示: 本地缓存在缓存文件时对文件名称的修改提供了两种方式,每一种方式对应了一个Java类 1) HashCodeFileNameGenerator ,该类负责获取文件名称的hashcode然后转换成字符串. 2) Md5FileNameGenerator ,该类把源文件的名称同过md5加密后保存. 两个类都继承了FileNam

  • 从源代码分析Android Universal ImageLoader的缓存处理机制

    通过本文带大家一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制.看了UIL中的缓存实现,才发现其实这个东西不难,没有太多的进程调度,没有各种内存读取控制机制.没有各种异常处理.反正UIL中不单代码写的简单,连处理都简单.但是这个类库这么好用,又有这么多人用,那么非常有必要看看他是怎么实现的.先了解UIL中缓存流程的原理图. 原理示意图 主体有三个,分别是UI,缓存模块和数据源(网络).它们之间的关系如下: ① UI:请求数据,使用唯一的Key值索引Memory Cache中的Bit

  • SimpleCommand框架ImageLoader API详解(三)

    ImageLoader API 详细介绍,具体内容如下 在ImageLoader中有以下几个不同的构造器: /** * 注意: 次构造器不支持下载进度提示功能 * @param context * @param withCache 是否支持缓存 * false--不带缓存 * true--支持缓存功能,默认缓存路径在外置存储缓冲目录中的picasso-big-cache文件夹中 */ public ImageLoader(Context context, boolean withCache) {

  • Android开发之ImageLoader使用详解

    先给大家展示效果图,看看是大家想要的效果吗,如果还满意,请参考以下代码: 前言 UniversalImageLoader是用于加载图片的一个开源项目,在其项目介绍中是这么写的, •支持多线程图片加载 •提供丰富的细节配置,比如线程池大小,HTPP请求项,内存和磁盘缓存,图片显示时的参数配置等等: •提供双缓存 •支持加载过程的监听: •提供图片的个性化显示配置接口: •Widget支持(这个,个人觉得没必要写进来,不过尊重原文) 其他类似的项目也有很多,但这个作为github上著名的开源项目被广

  • Android Universal ImageLoader 缓存图片

    项目介绍: Android上最让人头疼的莫过于从网络获取图片.显示.回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你.Universal Image Loader for Android的目的是为了实现异步的网络图片加载.缓存及显示,支持多线程异步加载.它最初来源于Fedor Vlasov的项目,且自此之后,经过大规模的重构和改进. 特性列举: 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 支持随意的配置ImageLoader,例如

  • Android ImageLoader第三方框架解析

    本文实例为大家分享了Android ImageLoader框架的使用方法,供大家参考,具体内容如下 1.准备工作 1)导入universal-image-loader-1.9.5.jar到项目中 2)创建MyApplication继承Application,在oncreate()中初始化ImageLoader public class MyApplication extends Application { @Override public void onCreate() { super.onCr

  • Android ListView实现ImageLoader图片加载的方法

    本文实例讲述了Android ListView实现ImageLoader图片加载的方法.分享给大家供大家参考,具体如下: 最近一直忙着做项目,今天也是忙里偷闲,想写篇博客来巩固下之前在应用中所用的知识.之前我们可能会也会肯定遇到了图片的异步加载问题,然而我们也可能会遇到图片二次或多次加载,这是ListView的特性造成的,具体原因不在这里讨论,又或者是OOM等问题.今天要讲的是一个开源框架Imageloader,个人觉得非常的好用. 该框架在github的地址.https://github.co

  • Android Imageloader的配置的实现代码

    Android Imageloader的配置的实现代码   ImageLoader 优点 (1) 支持下载进度监听 (2) 可以在 View 滚动中暂停图片加载 通过 PauseOnScrollListener 接口可以在 View 滚动中暂停图片加载. (3) 默认实现多种内存缓存算法 这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法,如 Size 最大先删除.使用最少先删除.最近最少使用.先进先删除.时间最长先删除等. (4) 支持本地缓存文件名规则定义

  • Android Studio 配置:自定义头部代码注释及添加模版方式

    1. 自定义头文件注释: 实现效果 实现步骤 依次操作File -> Settings ->Editor ->File and Code Templates,在详细展示窗口点击includes选项卡,找到 FileHeader点击,在编辑窗口输入自定义的注释模板即可.如下图: 注:我们这里添加的头文件不会随着Activity的创建自动添加头文件,只有创建JavaBean时会自动添加头文件,如下图所示: 2. 如何给Activity添加头文件?? 依次操作File -> Settin

  • Android Studio多渠道批量打包及代码混淆

    一.批量打包 1.集成了友盟统计,并在AndroidManifest.xml中添加了如下代码 <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/> 2.在app的build.gradle的android标签下添加如下代码: productFlavors { myapp {} _360 {} appchina {} hiapk {} } productFlavo

  • Android 底部导航控件实例代码

    一.先给大家展示下最终效果 通过以上可以看到,图一是简单的使用,图二.图三中为结合ViewPager共同使用,而且都可以随ViewPager的滑动渐变色,不同点是图二为选中非选中两张图片,图三的选中非选中是一张图片只是做了颜色变化. 二. 需求 我们希望做可以做成这样的,可以在xml布局中引入控件并绑定数据,在代码中设置监听回调,并且配置使用要非常简单! 三.需求分析 根据我们多年做不明确需求项目的经验,以上需求还算明确.那么我们可以采用在LinearLayout添加子View控件,这个子Vie

  • 详解Android studio ndk配置cmake开发native C

    Android 2.2 以后的版本对NDK的支持已经非常好了.最近把一个纯C的android项目,从eclipse ADT迁移到Android studio上.本文是参考Add C and C++ Code to Your Project官方文档(需要翻墙),经过各种尝试之后的总结. Android studio整合NDK开发,有两种模式,一种是ndk build,一种是cmake,如果是新项目官方推荐cmake.原来,ADT的时候只能用ndk build,这次切换IDE并没有选用ndk bui

  • Android中复制图片的实例代码

    activity_main.xml中的配置 <LinearLayout 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&quo

  • Win10下Android App安装配置开发环境

    前言:要进行一个Android App的开发,需要使用到Java.Android SDK.ADT以及一些软件开发工具IDE的帮助.本文将首先介绍这些工具的安装以及配置,以完成Android App开发的准备工作. 一.安装配置Java开发运行环境JDK/JRE Android App开发需要用到Java语言,要使用Java语言进行开发,需要先安装JDK并配置相关的环境变量.具体步骤如下: (1)在oracle官网下载JDK安装包:下载地址 (2)安装JDK:运行下载好的JDK安装包,依照安装提示

  • 史上最全的Android build.gradle配置教程

    前言 Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration optio

  • 史上最全Android build.gradle配置详解(小结)

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图: 一.Project的build.gradle文件: 对应的build.gradle代码如下: // Top-level build file where you can add configuration options

随机推荐