Android:万能框架——universal-image-loader——GridView异步加载图片

Universal-Image-Loader(android图片缓存) 转载请注明http://write.blog.youkuaiyun.com/postedit?ref=toolbar 点击下载所需jar文件 项目介绍: Android上最让人头疼的莫过于从网络获取图片、显示、回收,任何一个环节有问题都可能直接OOM,这个项目或许能帮到你。Universal Image Loader for Android的目的是为了实现异步的网络图片加载、缓存及显示, 阅读详情
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.nostra13.example.universalimageloader.Constants.Extra;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageLoadingProgressListener;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;

/**
 * 表格视图异步加载
 */
public class ImageGridActivity extends AbsListViewBaseActivity {

	String[] imageUrls;

	DisplayImageOptions options;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.ac_image_grid);

		Bundle bundle = getIntent().getExtras();
		imageUrls = bundle.getStringArray(Extra.IMAGES);

		options = new DisplayImageOptions.Builder()
			.showImageOnLoading(R.drawable.ic_stub) //..the image will be display during image loading
			.showImageForEmptyUri(R.drawable.ic_empty)//..the image will be display if empty URI (null or empty string) 
			.showImageOnFail(R.drawable.ic_error) //..the image will be displayed if some error occurs during requested 
			.cacheInMemory(true) //..Sets whether loaded image will be cached in memory 
			.cacheOnDisc(true) // .. Sets whether loaded image will be cached on disc 
			.considerExifParams(true) // Sets whether ImageLoader will consider EXIF parameters of JPEG image (rotate, flip)
			.bitmapConfig(Bitmap.Config.RGB_565)
			.build(); //Builds configured DisplayImageOptions object 

		listView = (GridView) findViewById(R.id.gridview);
		((GridView) listView).setAdapter(new ImageAdapter());
		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				startImagePagerActivity(position);
			}
		});
	}

	private void startImagePagerActivity(int position) {
		Intent intent = new Intent(this, ImagePagerActivity.class);
		intent.putExtra(Extra.IMAGES, imageUrls);
		intent.putExtra(Extra.IMAGE_POSITION, position);
		startActivity(intent);
	}

	public class ImageAdapter extends BaseAdapter {
		@Override
		public int getCount() {
			return imageUrls.length;
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			final ViewHolder holder;
			View view = convertView;
			if (view == null) {
				view = getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
				holder = new ViewHolder();
				assert view != null;
				holder.imageView = (ImageView) view.findViewById(R.id.image);
				holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
				view.setTag(holder); // 为所须要的组件添加tag标签
			} else {
				holder = (ViewHolder) view.getTag();
			}

			/**
			 * return view后,会增加 “展示的图片任务” 到线程池里
			 * 
			 * uri:目标uri, imageView 目标组件,  options 显示图片条件,
			 * ImageLoadingListener 图片加载监听器, ImageLoadingProgressListener 图片加载进度监听器
			 * progressListener:进度监听器
			 */
			imageLoader.displayImage(imageUrls[position], holder.imageView, options, new SimpleImageLoadingListener() {
										 @Override
										 public void onLoadingStarted(String imageUri, View view) {//开始加载
											 holder.progressBar.setProgress(0);
											 holder.progressBar.setVisibility(View.VISIBLE);
										 }

										 @Override
										 public void onLoadingFailed(String imageUri, View view,
												 FailReason failReason) {//加载失败
											 holder.progressBar.setVisibility(View.GONE);
										 }

										 @Override
										 public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {//加载完成
											 holder.progressBar.setVisibility(View.GONE);
										 }
									 }, new ImageLoadingProgressListener() {
										 @Override
										 public void onProgressUpdate(String imageUri, View view, int current,
												 int total) {
											 holder.progressBar.setProgress(Math.round(100.0f * current / total));
										 }
									 }
			);

			return view;
		}

		class ViewHolder {
			ImageView imageView; //图片
			ProgressBar progressBar; //进度条
		}
	}
}


源文件下载地址:http://pan.baidu.com/s/1bnf6CbX

Android高效图片异步加载实战:ListView、GridView与ViewPager集成 UIL的强大之处在于高度可定制。你可以根据业务需求精细调优每一个环节。你可能会问:UIL现在都不维护了,为什么还要花时间学它?答案很简单:思想永不过时。尽管Glide、Picasso等新框架在API易用性和功能丰富度上更胜一筹,但它们的核心理念——异步加载、三级缓存、内存控制、请求调度——全都源自UIL这类早期探索者。理解UIL,就像是学习计算机组成原理。你知道现在的CPU有多复杂,但只有搞懂了冯·诺依曼架构,才能真正明白计算机是怎么工作的。所以,下次当你轻松写下。 阅读详情

相关推荐

Meta开源Ego-Exo4D数据集:如何用1400小时多模态视频训练你的AI模型

Meta开源的Ego-Exo4D数据集包含1400小时多模态视频,涵盖第一人称和第三人称视角、眼动追踪、IMU传感器等多种模态,是AI模型训练的宝贵资源。本文详细介绍了从数据集下载、预处理到模型训练的全流程,帮助研究者高效利用这一多模态数据集进行AI模型开发。

weixin_29159441的博客 342

Android图片缓存框架Android-Universal-Image-Loader的使用详解

关于Android-Universal-Image-Loader的使用和配置,基于universal-image-loader-1.9.4的博文

后知后觉者! 4368

做量化没有实时数据怎么行?我找到一个超级好用的Python库,速度还贼快!

今天咱们介绍了 pytdx 这个神奇的库,重点包括:✅ 安装 pytdx✅ 连接 TDX 服务器✅ 获取实时行情数据✅ 获取 K 线数据✅ 获取分笔成交数据总之,pytdx 是一个速度快、免费、易用的量化利器,适合 A 股量化交易的同学们使用。如果你还在为数据发愁,赶紧试试吧!🚀顺手再看就是对花姐最大的支持,期待你的关注。

奔跑的蜗牛 5710

Android开源框架之Android-Universal-Image-Loader

引言:图片加载在Android开发中几乎是每一个应用都有的需求。图片加载从大的角度可以分为两种,一种是加载一两张的少量图片,比如用户资料页面加载一个用户头像图片;另一种则是加载大量网络图片,比如朋友圈,比如今日头条等新闻类APP的新闻页。对于第一种情况,我们一般开个线程或者用AsynTask异步加载一下就完事了,但对于第二种如果每张图片的加载都手动new 一个thread去做,逻辑操作复杂和内存泄漏都

小莫(Alan_Mo)的博客 1097

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 980

一生一芯 预学习阶段 NEMU代码学习(2)

如果 nemu_state.state == NEMU_ABORT:说明程序处于 "中止" 状态,输出 "ABORT",并且使用 ANSI_FG_RED 红色格式化显示。如果 halt_ret == 0,表示程序正常终止(触发了 "GOOD TRAP"),输出 "HIT GOOD TRAP",并使用 ANSI_FG_GREEN 绿色显示。如果要执行的指令数量 n 小于预定义的常量 MAX_INST_TO_PRINT,则将 g_print_step 置为 true,表示会逐步打印指令执行的过程。

weixin_45041054的博客 826

Android 图片加载库系列之Universal-Image-Loader

未经本人授权,不得转载!否则必将维权到底 平时做开发的时候, App 中肯定有异步加载图片,或者加载大量图片的需求。而加载图片常常会遇到许多的问题,比如说图片的错乱,OOM 等问题。相信大多数 Android 程序员都是用网络上最流行的图片加载库来实现咱们的需求。比较著名的就是 Universal-Image-Loader 、Fresco 、Picasso 、Glide 。今天首先来讲下大...

keithxiaoy 1042

最优化学习笔记1——关于拟牛顿法推导

从2020年3月份到现在,一年的时间里断断续续自学最优化,结合豆瓣读书、知乎等网站上的推荐,翻阅了以下书和课程: Stephen Boyd和Lieven Vandenberghe的《Convex Optimization》,这本书被公认为学习凸优化的必读经典著作,其中大量的篇幅讲应用,讲理论和算法的篇幅稍少一些。在B网站上有Boyd的视频课程,油管上也有,不过只有英文字幕,如果是零基础接触,直接看Boyd的视频稍显费劲,B站上也有凌青老师以《Convex Optimization》为教材的讲解,推荐作为入

xiaofei473的博客 1766

Android图片异步加载之Android-Universal-Image-Loader

将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西。最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就顺便整理记录下来,作为这一个多月来博客的重新开火做饭吧。从今天起我会陆续恢复博客的更新,也希望大家继续支持。 今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Univer

Ryan's zone 2万+

Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现

既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。 返回总目录...

DSMGUOGUO的博客 1435

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1109

Android 开源框架Universal-Image-Loader完全解析

相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架,今天这篇文章就是对这个框架的基本介绍以及使用,主

姚佳伟 901

热力学仿真软件:ANSYS CFX_(15).旋转机械仿真

创建旋转域在中选择需要设置为旋转域的区域。选择选项。设置旋转速度在设置中,指定旋转速度(单位为弧度/秒)。也可以选择选项,并输入具体值。设置旋转轴在设置中,指定旋转轴的方向和位置。通常旋转轴的方向可以使用单位向量来表示,例如[0, 0, 1]表示沿Z轴旋转。旋转轴的位置可以通过指定一个点的坐标来确定,例如[0, 0, 0]表示旋转轴通过原点。旋转机械的仿真在ANSYS CFX中是一个复杂但重要的过程。

kkchenjj的博客 1157

Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

qq_44943613的博客 174

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android-Universal-Image-Loader 异步加载图片

Android-Universal-Image-Loader是Github上一个Android异步加载图片的开源项目。代码写的非常好扩展性很强,使用起来也非常方便,有很多项目都使用了它,比如MediaHouse, UPnP/DLNA Browser,PhotoDownloader for Facebook 等等。更多详细信息可以去Github上查看:https://github.com/nostr

Ricky 6983

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

大家好!差不多两个来月没有写文章了,前段时间也是在忙换工作的事,准备笔试面试什么的事情,现在新工作找好了,新工作自己也比较满意,唯一遗憾的就是自己要去一个新的城市,新的环境新的开始,希望自己能尽快的适应新环境,现在在准备交接的事情,自己也有一些时间了,所以就继续给大家分享Android方面的东西。 相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加

勇敢向前努力努力 442

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用Android-Universal-Image-Loader加载网络图片

使用Android-Universal-Image-Loader加载网络图片 Android-Universal-Image-Loader是一个开源的Android图片加载辅助组件,其主要目的是图片加载,缓存,显示。提供了一系列配置选项和图片加载,缓存的控制。. GitHub地址:https://github.com/nostra13/Android-Universal-Image-Loade

chen52671的专栏 2404

Android开源框架Universal-Image-Loader基本介绍及使用

相信大家平时做Android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader,相信很多朋友都听过或者使用过这个强大的图片加载框架,今天这篇文章就是对这个框架的基本介绍以及使用,主

IssaE的博客 2万+

Android异步加载图片开源框架Universal-Image-Loader

2013年8月19日开源框架之Universal_Image_Loader学习 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片,在拖动ListView的时候不会出现卡的现象。关于ImageLoader这个开源框架的使用有很多网友都介绍过,不过还不够清楚,这里有一个关于这个开源项目的完美例子,ListView的图片加载、GridView的图片加载、ViewPager

Main_Stage的专栏 2793

Android开源框架ImageLoader的完美例子

本文转载于:http://blog.youkuaiyun.com/wwj_748/article/details/10079311 2013年8月19日开源框架之Universal_Image_Loader学习 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片,在拖动ListView的时候不会出现卡的现象。关于ImageLoader这个开源框架的使用有很多网友都介绍过

阿良的专栏 9750

Android图片异步加载之Android-Universal-Image-Loader使用

Android开发中我们会经常遇到图片过多或操作不当造成OOM异常,有时虽然是解决了这个问题但却会影响程序的运行效率,例如:当用户在快速滑动滚动条的过程中,我们程序在仍在艰难的加载服务器端的图片,这样给用户造成了极不好的体验。其实网络上关于图片的异步加载和缓存的讲解很多,但是其实,写一个这方面的程序还是比较麻烦的,要考虑多线程,缓存,内存溢出等很多方面,针对这一光大开发者都会遇到的问题,一些牛人们

Roy的专栏 902

Android图片异步加载之Android-Universal-Image-Loader使用1

Android开发中我们会经常遇到图片过多或操作不当造成OOM异常,有时虽然是解决了这个问题但却会影响程序的运行效率,例如:当用户在快速滑动滚动条的过程中,我们程序在仍在艰难的加载服务器端的图片,这样给用户造成了极不好的体验。其实网络上关于图片的异步加载和缓存的讲解很多,但是其实,写一个这方面的程序还是比较麻烦的,要考虑多线程,缓存,内存溢出等很多方面,针对这一光大开发者都会遇到的问题,一些牛人们

u013338165的专栏 631
上一篇: Android:万能框架——universal-image-loader——GalleryView异步加载图片
下一篇: Android:万能框架——universal-image-loader——ListView异步加载图片
234364575675
博客等级 码龄16年 34粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值