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 }
复制代码

转载于:https://www.cnblogs.com/wbp0818/p/5458519.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Access denied for user 'root'@'localhost' (using password: YES) 问题解决小记

初学php,按照视频安装后好mysql后 终端运行命令 mysql -u root -p 然后输入安装mysql时输入的密码六个1,会报这样的错误:Access denied for user rootlocalhost (using password: YES) ; 百度了一大堆,大海捞针一般找…

创业者具备的五大技能_一、如今大学生创业需要具备哪些知识与技能?

我参加过两次互联网+大赛,分别获得过省赛的金奖与银奖,还曾参加山东省大大小小比赛26场,金奖累计获得12次。对当代创业的大学生所应具备哪些基本素质深有体会。(1)技能:1、自我认知及科学规划能…

BZOJ3387栅栏行动

首先,很容易想到Dp。设f[i][0]表示第i个栅栏走左边的最短路,f[i][1]表示第i个栅栏走右边的最短路。 所以,我们要找一个刚好在第i个栅栏的左右边界下面的栅栏。如图所示: 则有: f[i][0] min(f[k][0] |Left[i] - Left[…

小程序沉浸式_古北水镇红叶祭嵌入戏精学院 全新文旅沉浸模式让游客嗨起来...

2020年10月17日-24日,古北水镇第二届红叶祭火热来袭。今年除了“超级漫展二次元度假”的模式,古北水镇与顶级沉浸互动体验运营方——INX戏精学院合作,在深度体验空间的同时,加入了互动式的实景游戏体验,通过演员互动&a…

又拍云刘平阳,理性竞争下的技术品牌提升之道

云服务市场趋渐平稳,在这种情况下,就需要通过对某一项技术的深入应用来实现服务的精致化。同时,对品牌的打造和包装也必不可少。\\又拍云在2010年开始提供云服务,经过多年的发展,以及市场策略的转变,决定对…

iOS开发简单高效的数据存储

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨。本文主要从概念上把“数据…

回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

01概述数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。…

Android系统源码学习——源码目录结构介绍

2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Android源代码的位置。 Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码…

简答题c语言文件操作顺序,计算机基础与程序设计2012年4月真题试题(02275)

计算机基础与程序设计2012年4月真题试题与答案解析(02275)计算机基础与程序设计2012年4月真题试题与答案解析(02275),本试卷总共100分。一、单项选择题(本大题共20小题.每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的&#xff0c…

汇编实验3

1.运行如下代码: assume cs:codecode segment mov ah,2 mov dl,3 add dl,30h int 21h mov ah,2 mov dl,6 add dl,30h int 21h mov ah,4ch int 21hcode endsend 进行汇编运行之后结果为: 将第四行和第九行的寄存器dl的值修改之后代码如下: a…

听了一堂《**学院》的课,我也是醉了

这还是首席讲师的ppt,这说话咋感觉,不像是技术出身,反倒是MongoDB的销售人员呢。 这说话,不大讲相对,净他妈的 绝对,这水平,我真醉了。 这牛逼吹得,啧啧啧。 我还是看书吧。 转载于:…

appium 环境搭建(不推荐安装此版本appium,推荐安装appium desktop)

一:安装node.js 1、双击这个软件 2、一键安装,全都下一步,不要私自更改安装路径 3、打开cmd,输入npm,出现如下截图表示成功 二:安装appium 1、双击appium-installer.exe 2、一键安装,全都下一步…

二级c语言上机题库及解析,2013年计算机二级C语言上机题库及答案解析(3)

填空题给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于M。程序中库函数strstr(s1, s2)的功能是在 s1串…

js 数组遍历符合条件跳出循环体_C++模拟面试:从数组“紧凑”操作说开来

面试官自来也去掉一个字符串中的空格。假设用C语言来解答,字符串是char数组。O(n)时间复杂度实现不难,比如额外申请一个新数组,然后遍历一遍字符串,将符合条件的字符存储到新数组中,实现起来很简单。但这显然不能让面试…

基本入门程序编写格式和注意事项

在安装好JDK后联系程序的基本写法。1、先创建记事本,如果有超级记事本如:notepad、ultraedit、editplus等更好。重命名把记事本后面的后缀名改为.java 但是值得注意的是要看看自己创建的记事本文档是否是隐藏后缀名的。要是有设置隐藏的就取消隐藏,以免混…

.dll文件存在但是不显示_一招巧妙解决U盘内文件明明存在,打开U盘而内容却不显示的问题...

大家可能都遇到过这种情况,就是说U盘中明明有文件,但是插在电脑上就是什么文件都没有,一片空白,这样的问题对于那些对文件很重要且仅保存了1份的人来说是很.kongbu.,因为U盘中的内容都是命根子。给大家介绍绝对有用的解…

Vue 框架-05-动态绑定 css 样式

Vue 框架-05-动态绑定 css 样式 今天的小实例是关于 Vue 框架动态绑定 css 样式,这也是非常常用的一个部分 首先说一下 动态绑定,相对的大家都知道静态绑定,静态绑定的话,直接加 class“”就可以了,使用 Vue 呢之前也介…

bool查询原理 es_ES系列之原理copy_to用好了这么香

写在前面Elasticsearch(以下简称ES)有个copy_to的功能,之前在一个项目中用到,感觉像是发现了一个神器。这个东西并不是像有些人说的是个语法糖。它用好了不但能提高检索的效率,还可以简化查询语句。基本用法介绍直接上示例。先看看mapping&am…

vnr光学识别怎么打开_干货|指纹锁的指纹识别模块的前世今生,智能锁的指纹识别到底有多智能?...

智能锁现在也有很多叫法:指纹锁、电子锁。可见指纹识别是智能锁的核心功能了,那我们今天来聊聊智能锁的指纹识别模块。指纹识别的历史指纹识别认证的流程指纹识别技术的种类指纹识别的历史早在2000多年前我国古代的人就将指纹用于签订合同和破案了&#…

hide show vue 动画_(Vue动效)7.Vue中动画封装

关键词&#xff1a;动画封装——进行可复用一、如何封装&#xff1f;1、使用&#xff1a;局部组件传递数据局部组件中使用JS动画2、原理&#xff1a;将动画效果完全第封装在一个名为<fade>的组件中&#xff0c;今后如要复用&#xff0c;只需要复制有其组件名的部分&#…