欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发中ImageLoder进行图片加载和缓存

程序员文章站 2024-02-27 15:03:09
图片处理类: package com.longfei.admin.imageloder_text; import android.app.applicat...

图片处理类:

package com.longfei.admin.imageloder_text;
 
import android.app.application;
import android.graphics.bitmap;
import android.os.environment;
 
import com.nostra13.universalimageloader.cache.disc.impl.unlimiteddisccache;
import com.nostra13.universalimageloader.cache.disc.naming.md5filenamegenerator;
import com.nostra13.universalimageloader.cache.memory.impl.usingfreqlimitedmemorycache;
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.fadeinbitmapdisplayer;
import com.nostra13.universalimageloader.core.display.roundedbitmapdisplayer;
import com.nostra13.universalimageloader.core.download.baseimagedownloader;
 
import java.io.file;
 
/**
 * created by admin on 2016/4/9.
 */
public class imageloading extends application {
  @override
  public void oncreate() {
    // todo auto-generated method stub
    super.oncreate();
    imageloaderconfiguration config = new imageloaderconfiguration.builder(
        this)
        .memorycacheextraoptions(480, 800)
            // max width, max height,即保存的每个缓存文件的最大长宽
        .disccacheextraoptions(480, 800, null)
            // can slow imageloader, use it carefully (better don't use
            // it)/设置缓存的详细信息,最好不要设置这个
        .threadpoolsize(3)
            // 线程池内加载的数量
        .threadpriority(thread.norm_priority - 2)
        .denycacheimagemultiplesizesinmemory()
        .memorycache(new usingfreqlimitedmemorycache(2 * 1024 * 1024))
            // you can pass your own memory cache
            // implementation/你可以通过自己的内存缓存实现
        .memorycachesize(2 * 1024 * 1024)
        .disccachesize(50 * 1024 * 1024)
        .disccachefilenamegenerator(new md5filenamegenerator())
            // 将保存的时候的uri名称用md5 加密
        .tasksprocessingorder(queueprocessingtype.lifo)
        .disccachefilecount(100)
            // 缓存的文件数量
        .disccache(
            new unlimiteddisccache(new file(environment
                .getexternalstoragedirectory()
                + "/myapp/imgcache")))
            // 自定义缓存路径
        .defaultdisplayimageoptions(getdisplayoptions())
        .imagedownloader(
            new baseimagedownloader(this, 5 * 1000, 30 * 1000))
        .writedebuglogs() // remove for release app
        .build();// 开始构建
    imageloader.getinstance().init(config);
  }
 
  private displayimageoptions getdisplayoptions() {
    displayimageoptions options;
    options = new displayimageoptions.builder()
        .showimageonloading(r.drawable.ic_launcher) // 设置图片在下载期间显示的图片
        .showimageforemptyuri(r.drawable.ic_launcher)// 设置图片uri为空或是错误的时候显示的图片
        .showimageonfail(r.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片
        .cacheinmemory(true)// 设置下载的图片是否缓存在内存中
        .cacheondisc(true)// 设置下载的图片是否缓存在sd卡中
        .considerexifparams(true) // 是否考虑jpeg图像exif参数(旋转,翻转)
        .imagescaletype(imagescaletype.exactly_stretched)// 设置图片以如何的编码方式显示
        .bitmapconfig(bitmap.config.rgb_565)// 设置图片的解码类型//
            // .delaybeforeloading(int delayinmillis)//int
            // delayinmillis为你设置的下载前的延迟时间
            // 设置图片加入缓存前,对bitmap进行设置
            // .preprocessor(bitmapprocessor preprocessor)
        .resetviewbeforeloading(true)// 设置图片在下载前是否重置,复位
        .displayer(new roundedbitmapdisplayer(20))// 是否设置为圆角,弧度为多少
        .displayer(new fadeinbitmapdisplayer(100))// 是否图片加载好后渐入的动画时间
        .build();// 构建完成
    return options;
  }
 
}
 
package com.longfei.admin.imageloder_text;
 
import android.app.activity;
import android.graphics.bitmap;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.widget.imageview;
 
import com.nostra13.universalimageloader.core.imageloader;
import com.nostra13.universalimageloader.core.assist.failreason;
import com.nostra13.universalimageloader.core.listener.imageloadinglistener;
 
 
 
/**
 * 1、 universal-imageloader的配置
 *
 * 2、用universal-imageloader加载网络图片和本地图片
 *
 * @author administrator
 */
 
 
public class mainactivity extends activity {
  private imageloader loader;
  private imageview iv_img;
 
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
 
    loader=imageloader.getinstance();//实例化imageloder
    iv_img=(imageview)findviewbyid(r.id.iv_img);
 
    string url="file:///"+"加载本地图片";
 
    //加载网络图片,第一个参数为路径
//    loader.displayimage("http://static.oschina.net/uploads/user/494/988131_100.jpg?t=1419303093000",iv_img);
 
    loader.displayimage("http://static.oschina.net/uploads/user/494/988131_100.jpg?t=1419303093000", iv_img, new imageloadinglistener() {
      @override
      public void onloadingstarted(string s, view view) {
        log.i("info","加载开始");
 
      }
 
      @override
      public void onloadingfailed(string s, view view, failreason failreason) {
        log.i("info","加载失败");
 
      }
 
      @override
      public void onloadingcomplete(string s, view view, bitmap bitmap) {
        log.i("info","加载完毕");
 
      }
 
      @override
      public void onloadingcancelled(string s, view view) {
        log.i("info","加载取消");
 
      }
    });
  }
}