ImageLoader加载图片
先导universal-image-loader-1.9.3包
在application配置 android:name=".MyApplication"
intent权限

1 package com.ch.day13_imageloaderdemo;
2
3 import java.io.File;
4
5 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
6 import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
7 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
8 import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
9 import com.nostra13.universalimageloader.core.DisplayImageOptions;
10 import com.nostra13.universalimageloader.core.ImageLoader;
11 import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
12 import com.nostra13.universalimageloader.core.assist.ImageScaleType;
13 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
14 import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
15 import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
16 import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
17 import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
18
19 import android.app.Application;
20 import android.graphics.Bitmap;
21 import android.os.Environment;
22 import android.util.Log;
23
24 public class MyApplication extends Application{
25
26 @Override
27 public void onCreate() {
28 // TODO Auto-generated method stub
29 super.onCreate();
30 Log.i("TAG", "自定义的application类调用了.....");
31 //创建ImageLoader的默认配置
32 // ImageLoaderConfiguration confing = ImageLoaderConfiguration.createDefault(this);
33 //得到sdcard路径
34 String sdpath = Environment.getExternalStorageDirectory().getPath();
35 //自定义ImageLoaderConfiguration
36 ImageLoaderConfiguration confing = new ImageLoaderConfiguration.Builder(this)
37 .memoryCacheExtraOptions(480, 800)// default = device screen dimensions 内存缓存文件的最大长宽
38 .diskCacheExtraOptions(480, 800, null)// 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
39 // .taskExecutor(null)
40 // .taskExecutorForCachedImages(null)
41 .threadPoolSize(3)// default 线程池内加载的数量
42 .threadPriority(Thread.NORM_PRIORITY-2) // default 设置当前线程的优先级
43 .tasksProcessingOrder(QueueProcessingType.FIFO)//任务的处理顺序
44 .denyCacheImageMultipleSizesInMemory()
45 .memoryCache(new LruMemoryCache(2 * 1024 * 1024))////设置自己的内存缓存大小 2m
46 .memoryCacheSize(2 * 1024 * 1024)
47 // .memoryCacheSizePercentage(13)
48 .diskCache(new UnlimitedDiscCache(new File(sdpath+"/app1407a/imgcache")))//设置缓存的图片在sdcard中的存放位置
49 .diskCacheSize(50 * 1024 * 1024)
50 .diskCacheFileCount(100)
51 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//md5加密的方式,或new HashCodeFileNameGenerator()
52 .imageDownloader(new BaseImageDownloader(this))
53 // .imageDecoder(new BaseImageDecoder(true))
54 .defaultDisplayImageOptions(null)//不适用默认的图片加载配置,使用自定义的
55 .writeDebugLogs()
56 .build();
57 //初始化
58 ImageLoader.getInstance().init(confing);
59 }
60
61 public static DisplayImageOptions getOptions(){
62 //自定义加载图片的配置信息
63 DisplayImageOptions option = new DisplayImageOptions.Builder()
64 .showImageOnLoading(R.drawable.ic_launcher)// 设置图片下载期间显示的图片
65 .showImageForEmptyUri(R.drawable.emptyurl) // 设置图片Uri为空或是错误的时候显示的图片
66 .showImageOnFail(R.drawable.emptyurl)// 设置图片加载或解码过程中发生错误显示的图片
67 .resetViewBeforeLoading(false)// default 设置图片在加载前是否重置、复位
68 // .delayBeforeLoading(1000)// 下载前的延迟时间
69 .cacheInMemory(true)// default 设置下载的图片是否缓存在内存中
70 .cacheOnDisk(true)// default 设置下载的图片是否缓存在SD卡中
71 .considerExifParams(false)
72 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)//设置图片的显示比例
73 .bitmapConfig(Bitmap.Config.RGB_565)// default 设置图片的解码类型
74 // .displayer(new RoundedBitmapDisplayer(75))//设置图片的圆角半径
75 .displayer(new FadeInBitmapDisplayer(8000))//设置图片显示的透明度过程时间
76 .build();
77
78 return option;
79 }
80
81 }


1 package com.ch.day13_imageloaderdemo;
2
3 import com.nostra13.universalimageloader.core.ImageLoader;
4 import com.nostra13.universalimageloader.core.assist.FailReason;
5 import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
6 import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;
7
8 import android.os.Bundle;
9 import android.app.Activity;
10 import android.app.ProgressDialog;
11 import android.graphics.Bitmap;
12 import android.util.Log;
13 import android.view.Menu;
14 import android.view.View;
15 import android.widget.ImageView;
16
17 public class MainActivity extends Activity {
18 private ImageView img;
19 String url = "http://photocdn.sohu.com/kis/fengmian/1193/1193693/1193693_ver_big.jpg";
20 String url1 = "http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg";
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_main);
25
26 init();
27 }
28
29 public void init(){
30 img = (ImageView) findViewById(R.id.img);
31 //通过ImageLoader加载网络图片,配置给img
32 // ImageLoader.getInstance().displayImage(url, img);
33 // ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions());
34 // ImageLoader.getInstance().displayImage(url, img, MyApplication.getOptions(), new ImageLoadingListener() {
35 // @Override
36 // public void onLoadingStarted(String arg0, View arg1) {
37 // }
38 // @Override
39 // public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
40 // }
41 // @Override
42 // public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
43 // }
44 // @Override
45 // public void onLoadingCancelled(String arg0, View arg1) {
46 // }
47 // });
48 final ProgressDialog pro = new ProgressDialog(this);
49 pro.setMessage("努力加载中。。。");
50 pro.setIcon(R.drawable.ic_launcher);
51 pro.show();
52 ImageLoader.getInstance().displayImage(url1, img, MyApplication.getOptions(), null, new ImageLoadingProgressListener() {
53
54 @Override
55 public void onProgressUpdate(String arg0, View arg1, int arg2, int arg3) {
56 // TODO Auto-generated method stub
57 Log.i("TAG", arg0+",,"+arg2+","+arg3);
58 float rs = ((float)arg2)/arg3;
59 pro.setMessage("当前加载到:"+rs*100+"%");
60 if(arg2 == arg3){
61 pro.cancel();
62 }
63 }
64 });
65 }
66
67 @Override
68 public boolean onCreateOptionsMenu(Menu menu) {
69 // Inflate the menu; this adds items to the action bar if it is present.
70 getMenuInflater().inflate(R.menu.activity_main, menu);
71 return true;
72 }
73
74 }

ImageLoader加载图片的更多相关文章
- 使用Volley框架中的ImageLoader来异步的加载图片
Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.ImageLoader的内部使用ImageRequest来实现,它的构造器可 ...
- Android框架Volley之:利用Imageloader和NetWorkImageView加载图片
首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...
- 利用Volley封装好的图片缓存处理加载图片
Volley 工具箱中提供了一种通过 DiskBasedCache 类实现的标准缓存.这个类能够缓存文件到磁盘的指定目录.但是为了使用 ImageLoader,我们应该提供一个自定义的内存 LRC b ...
- 【第二篇】Volley的使用之加载图片
Volley加载图片有两种方式: 1,ImageRequest 来对网络图片进行请求,放入请求队列,获取后现在在控件上面. 2,NetworkImageView 最为自定义控件来自动加载网络图片. 3 ...
- swift 异步加载图片(第三方框架ImageLoader)
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...
- android ImageLoader加载本地图片的工具类
import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; /** * 异步 ...
- [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 这个可以实现ImageView异步加载 ...
- ionic懒加载图片
https://github.com/paveisistemas/ionic-image-lazy-load <script src="lib/ionic/js/ionic-image ...
- listview可见再加载图片
对于,listView如果同时含有大量文字和图片,那么对于用户,如果不需要滑动到后面,那么此时去加载网络图片,显然是耗费流量的. 此时可以做一些优化: listView.getRefreshableV ...
随机推荐
- UIPickerView理解
- Java之内存诊断
Java 内存诊断比较容易, 需要: 1 获取heap dump 2 分析heap dump 1.1 获取dump之1 VM arguments: -XX:+HeapDumpOnOutOfMemory ...
- Sina 新浪Ip归属地Api 很好用的,使用get请求
前言 这几天做了一个客服管理系统,需要根据游客的Ip获取他的归属地,刚开始使用了,www.ip138.com 抓取ip归属地,用这还可以,但是不显示国家:于是是找了这个新浪的Api,很不错啊 用法 1 ...
- CodeForces 676D代码 哪里有问题呢?
题目: http://codeforces.com/problemset/problem/676/D code: #include <stdio.h> #define MAXN 1001 ...
- Preference Screen 首选项
设置Preference Screen (res\xml\userpreferences.xml) <?xml version="1.0" encoding="u ...
- 《Linux及安全》实践3.2
Login程序破解 一.掌握基本的汇编指令机器码 nop=空指令( 机器码90) JNE = 如果不相等就跳转机器码75) JE = 如果相等就跳转机器码74) JMP = 无条件跳转机器码EB) C ...
- PHP访问带密码的Redis
1. 设置Redis密码,以提供远程登陆打开redis.conf配置文件,找到requirepass,然后修改如下: requirepass yourpassword yourpassword就是re ...
- SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改
当数据库有数据修改数据库字段时,默认是阻止的! 工具---选项---设计器---阻止保存要求重新创建表的更改(取消钩)
- 由LazyMan联想到的
LazyMan问题与解法 http://mp.weixin.qq.com/s/drNGvLZddQztcUzSh8OsSw 给出了一道题目,并给出了解法: 题目: 实现一个LazyMan,可以按照以下 ...
- Python模块和包
模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...