开源项目Universal Image Loader for Android 说明文档 (1) 简单介绍



When developing applications for Android, one often facesthe problem of displaying some graphical content from the Internet. So, youshould provide image loading from the Web in an Android app, their processingand displaying
with limited memory again and again. And despite the problemhomogeneity, each new project imposes its own specific requirements on thetask.

You may need to organize caching of downloaded images; ifimages are rather large, it is necessary to ensure effective working with thememory to prevent the disastrous mistake OutOfMemoryError . It is also possiblethat
an image-stub has to be showed during the image loading; and maybe thesame image should be displayed in different size variations, etc.

As a result, time and resources are wasted for codeadaptation to specific needs. It is this problem what urged me on creating alibrary with open source code - Universal Image Loader for image loading in anAndroid app.
Its aim is solution universalization of the above describedproblem in a flexible and configurable tool.

Currently, the library can be used everywhere, where youhave to download and display (and possibly even to cache) an image from theInternet or from the file system of your smartphone. Classic examples forpossibility of
ImageLoader using are various lists, tables, galleries, whereyou need to display images from the Web.

上面一大堆话,是说作者为什么做这个项目

如今这个类库能够用在随意地方。比如。你须要从网络上下载和显示图片。或者从手机本地读取。ImageLoader能够用的地方包含各种lists,tables。galleries

The main features of the ImageLoader for Android are:

主要特性包含:

?asynchronous loading and displaying images from the Internet or the SD-card;

从网络或SD卡异步载入和显示图片

? ability ofcaching loaded images in memory and / or the device‘s file system;

在本地或内存中缓存图片

? ability tomonitor the loading process by means of "listeners"

通过“listener”监视载入的过程

? effectiveworking with the memory while caching images in the memory;

缓存图片至内存时,更加高效的工作

? wideopportunities to customize the tool to fit it to your needs.

高度可定制化

ImageLoader的可选设置项

What can be configured in the ImageLoader?

全局设置:

? themaximum size of images cached in the memory;

在内存中缓存的图片最大尺寸

? timeoutfor connection establishing and image loading;

连接超时时间和图片载入超时时间

? themaximum number of simultaneously working threads for images loading;

载入图片时使用的同一时候工作线程数量

? threadspriority during downloading and displaying images;

下载和显示图片时的线程优先级

?implementation of disk cache (you can choose from ready-made implementations orcreate your own);

使用已定义本地缓存或自己定义

?implementation of cache in the memory (you can choose from ready-madeimplementations or create your own);

使用已定义内存缓存或自己定义

? default options of image downloading

图片下载的默认选项

Image loading options (applied to each individual callImageLoader.displayImage(...)) provide the ability to specify:

图片载入选项能够进行下面设置:

? whether todisplay the image-stub in the ImageView, while the real image is being loaded(if yes, then you need to specify this "stub");

当真实图片载入成功以后,是否显示image-stub。

(假设是,须要制定stub)

? Whether tocache the downloaded image in the memory.

在内存中是否缓存已下载图片

? Whether tocache the downloaded image in the file system.

在本地是否缓存已下载图片

? Type ofimage decoding (the fastest or the most economical for the memory).

图片解码方式(高速/经济)

As already mentioned, you can implement your own version ofthe disk cache and the cache in memory. But most likely, you will be quitesatisfied with ready solutions, most of which are caches, limited by someparameter (size,
number of files) and having their own logic of self-cleaningby limit excess (FIFO, the oldest object, the largest object, the most seldomused).

如上所述。你能够实现你自己的本地缓存和内存缓存方法,可是通常Jar包中已实现的方法已经能够满足你的需求。

比如。

。。。。

There are enough configuration options, but this is not thecase as "the main principle of UNIX": "u can configureEVERYTHING. And you WILL configure everything." :) In theImageLoader
case, you can customize everything, but it is not necessary at all:??the default configuration is always available and suitable in the most cases.

虽然UIL已经提供了非常多设置,可是距离“UNIX的核心精神:你能够配置不论什么选项。你能够配置不论什么选项”仍有差距。在UIL中,你能够自己定义不论什么选项。但这并非必须的。由于通常已经有了默认设置,并且这些设置在大多数情况下都是适用的。

Implementationpeculiarities

特定需求的实现

Few words about the project structure. Each task for image loadingand displaying (and that is, looking ahead, the call ImageLoader.displayImage(imageView, imageUrl)) is performed in a separate thread, except if the pictureis
in cache in the memory - then it is just immediately displayed.here is a separate threads queue where tasks get if theneeded image is cached on the file system. If you do not have the rightimage in the cache, then the
task-thread gets in the thread pool. Therefore,there are no obstacles for a fast displaying of cached images.

简单描写叙述一下这个项目的结构。

每个图片的载入和显示任务都执行在独立的线程中,除非这个图片缓存在内存中,这样的情况下图片会马上显示。假设须要的图片缓存在本地,他们会开启一个独立的线程队列。假设在缓存中没有正确的图片,任务线程会从线程池中获取,因此,高速显示缓存图片时不会有明显的障碍。

he algorithm of the taskprocessing isepresented on the scheme:

处理的规则用下图进行简单的描写叙述:

The main actors of the project can relatively be divided:

UIL的主要功能能够分为下面及部分

? the above mentionedqueue and pool of threads;

上面提到的线程队列和线程池

? cache in thememory;

缓存至内存

? disk cache;

缓存至本地

? Image decoder,which decodes image files into Bitmap objects.

图片解析,将图片解析为Bitmap对象

The main class ImageLoadermanages it all; the maininteraction with the user is performed through it.

最重要的类ImageLoader管理了全部的操作。和用户的交互也主要通过该类。

时间: 2024-10-29 10:46:25

开源项目Universal Image Loader for Android 说明文档 (1) 简单介绍的相关文章

开源项目Universal Image Loader for Android 说明文档 (1) 简介

 When developing applications for Android, one often facesthe problem of displaying some graphical content from the Internet. So, youshould provide image loading from the Web in an Android app, their processingand displaying with limited memory aga

LaTeX宏包说明文档的简单介绍与下载地址

LaTeX的宏包(或宏集)很多,我把曾经用到的宏包说明文档上传到网上供大家下载使用.原本打算放到51CTO里面,但是在上传有些文件时提示已经有人上传了,但是去查找时又没有,不清楚怎么回事,所以就都放在我的百度网盘上吧.下面列出下载地址与介绍. 1.CTEX宏包 1) 介绍 CTEX 宏包是面向中文排版的通用 LATEX 排版框架,为中文 LATEX 文档提供了汉字输出支持.标点压缩.字体字号命令.标题文字汉化.中文版式调整.数字日期转换等支持功能,可适应论文.报告.书籍.幻灯片等不同类型的中文文

.NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/ 说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较确切的知道中文名

android中ViewConfiguration的简单介绍

android.view.ViewConfiguration Contains methods to standard constants used in the UI for timeouts, sizes, and distances. 常用方法: ViewConfiguration.get(getContext()).getScaledTouchSlop() 官方描述:Distance in pixels a touch can wander before we think the use

Android开源项目 Universal imageloader 源码研究之项目框架

Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 public static void initImageLoader(Context context) { ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); config.thr

饿了么开源项目:便捷高效的Android数据持久化存储框架

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51436972 Android应用开发时经常要对许多数据进行持久化存储,便于以后访问. 对于int.double.boolean这些基本数据,可以使用SharedPreference.对于一些对象,往SharedPreference里存储的时候需要使用序列化技术.如果对象很大,或者碰到列表.数组等结构,就必须使用数据库.而使用数据库比较麻烦,成

【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库

Retrofit官网:http://square.github.io/retrofit/ Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作.同时还封装了网络代码的调用. 例如: public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path(&quo

学习Android开源项目-根据知乎日报API分析重构一个简单的知乎日报Android客户端

从今天开始准备开始根据之前学习的知乎日报纯净版来实现一个自己的知乎日报客户端. 每次写完的代码都会更新在Github上,每次完成一个既定目标,完成之后当天完成目标的检查并根据错误进行最优化重构. 项目地址:https://github.com/wylhyz/ZhihuDialyPrue

开源项目【commons】一 || 开发文档

目录 1.项目地址 2.项目简介 3.项目结构 4.commons-api功能列表 5.commons-core功能列表 6.学习交流QQ群[883210148] 1.项目地址 工具类-commons[Git地址 https://gitee.com/ying_kevin/commons] 2.项目简介 本项目构建目的主要是致力于开发一套适用于微服务架构体系的公共类封装,解决各微服务间的代码重复利用,规范微服务项目中API接口规范,约定代码规范性.项目的完善是一个不断迭代更新的过程,同时也欢迎各位