通过GridView的getLastVisiblePosition()和getFirstVisiblePosition()方法确认当前GridView控件中将会显示Dataset中的数据范围,在该范围之内的图片应该是已经解码过的,而不在该区间中的图片,可以在适当的时候使用recycle()方法回收。实现方式可以使用HashMap来存储对应的ID和Bitmap
HashMap<Integer, Bitmap> picMap,Integer的值对应path的ArrayList即可,系统每次回调getView()的时候,通过上面的两个方法,确定需要显示的ID范围,遍历该范围中的ID,从picMap中查询,如果对应ID的Bitmap为空的话,就通过path的ArrayList中对应的文件名解码图像,如果不为空,那么就直接设置即可。而不在该区间的图片最好是调用recycle()回收,要不就很有可能出现OOM错误。
至于预加载的意思就是每次得到需要显示的范围之后,再扩大一定的范围,使得用户在快速切换图片时,不至于出现因为解码而感觉到的停滞感。
建议扩大的范围为起始位置和终止位置分别往前和往后扩大当前GridView一行显示缩略图的个数,例如已知将显示8~23号图片,GridView每行显示4个缩略图,那么将其范围扩大到4~27,保证处于该区间的ID对应的图片解码成功,并设置给ImageView,而不在该区间内的图片尽量使用recycle()方法回收。不过如果楼主的应用中不会碰到特别多的图片的话,建议不要把问题复杂化。当然如果有需求的话,这样做会保证程序不出错,只是稍微复杂了一些。
分享到:
相关推荐
在Android开发中,Bitmap是处理图像数据的基本类,它用于表示位图图像。"bitmap上传图片demo"是一个示例项目,展示了如何利用Bitmap处理本地图片并进行上传,同时提供了将图片裁剪为圆形以适合作为头像的功能。在这...
在Android开发中,Bitmap是处理图像的基本类,用于在内存中表示位图图像。当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。...
`drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)`是`drawBitmap()`方法的一个重载版本,其参数含义如下: 1. **Bitmap bitmap**: 这是你要绘制的位图对象,通常是从资源文件、内存缓存或者直接创建的...
在Android开发中,Activity之间的数据传递是常见的操作,特别是在处理图像数据时,如Bitmap对象。Bitmap是Android系统中用于表示图像的重要类,它包含了图像的所有像素信息。在不同Activity之间传递Bitmap,通常是...
C#中的Bitmap类和Graphics类 C#中的Bitmap类和Graphics类是两种常用的图形处理类,它们之间存在一定的差异和联系。在本节中,我们将详细介绍Bitmap类和Graphics类的概念、方法和应用场景。 一、Bitmap类 Bitmap类...
在处理图像时,我们可能会遇到需要在不同的数据类型之间转换的情况,比如从Bitmap到Stream,再到byte数组,最后再还原回Bitmap。这样的转换在上传图片、存储图片数据或在网络中传输时非常常见。本篇文章将详细介绍...
Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true); ``` 除了旋转,我们还可以使用Matrix进行缩放操作。例如,将Bitmap按...
在Android开发中,Bitmap是用于表示图像数据的基本对象,它是一种内存中的图片表示形式。而当我们需要在应用程序中展示带有圆角的图片时,通常会用到Bitmap的处理技巧。本篇文章将深入探讨如何在Android中对Bitmap...
Bitmap newBitmap = new Bitmap(bitmap.Width, bitmap.Height, PixelFormat.Format32bppArgb); ``` 3. **遍历像素并复制**: 接下来,我们需要遍历原始Bitmap的每一个像素,将其转换为RGB32格式,并复制到新Bitmap中...
在Android开发中,处理`Bitmap`内存溢出问题是一个常见的挑战,尤其是在处理高分辨率或大尺寸图片时。当应用程序尝试加载或操作一张超出虚拟机内存预算的`Bitmap`时,系统会抛出`java.lang.OutOfMemoryError: bitmap...
"Android 中 Canvas 转换为 Bitmap" Android 中 Canvas 转换为 Bitmap 是一种常见的需求,especially 在需要将 Canvas 绘制的图形显示在 ImageView 中的情况下。在这篇文章中,我们将详细介绍如何将 Canvas 转换为 ...
在VC(Visual C++)环境下,Bitmap对象是用于表示图像的一种常见数据结构,而`Byte[]`(字节数组)则常用于数据传输或存储。本篇文章将详细解释如何在VC中将Bitmap对象转换为Byte数组。 首先,理解Bitmap对象。...
在C#.NET编程环境中,`Bitmap`类是用于处理图像的核心类,它允许开发者创建、加载、修改和显示位图图像。本篇文章将详细介绍`Bitmap`类的基本使用方法,包括其构造函数、属性、方法以及如何与其他图形组件交互。 1....
软件开发网在此之前给大家介绍过图片加载框架Glide的基本用法介绍,大家可以先参考一下,本篇内容更加深入的分析了Glide获取图片Path、Bitmap用法,以及实现的代码分析。 1. 获取Bitmap: 1)在图片下载缓存好之后...
在 Android 中,我们可以使用 Bitmap 类来处理 bitmap 图片,该类提供了多种方法来处理 bitmap 图片,例如 getPixels() 方法可以获取 bitmap 图片的像素颜色值,setPixels() 方法可以设置 bitmap 图片的像素颜色值。...
而Bitmap图像则是一种常见的图像格式,广泛存在于Windows操作系统和其他多种环境中。在进行机器视觉项目时,有时我们需要将Bitmap图像转换为Halcon能识别的图像类型,即HObject,以便在Halcon中进行后续的图像分析和...
Bitmap格式说明文档 Bitmap格式说明文档是Windows操作系统中使用的图形文件格式的说明文档,涵盖了Bitmap和ICON格式的详细说明,并且讲述了WIN API中对格式的封装。 一、图形文件格式 在Windows操作系统中,图形...
赠送jar包:RoaringBitmap-0.7.45.jar; 赠送原API文档:RoaringBitmap-0.7.45-javadoc.jar; 赠送源代码:RoaringBitmap-0.7.45-sources.jar; 赠送Maven依赖信息文件:RoaringBitmap-0.7.45.pom; 包含翻译后的API...
Bitmap位图是Android系统中广泛使用的图像处理类,主要用于显示和操作像素级别的图像数据。在Android开发中,我们经常会遇到需要对Bitmap进行各种操作的情况,其中旋转Bitmap就是一种常见的需求,比如用户拍摄照片后...
在Android开发中,Bitmap是用于处理图像的基本类,它代表了一个位图图像。有时我们需要将Bitmap对象保存到本地,例如用户拍摄的照片或者加载的网络图片,以便后续使用或分享。本篇文章将深入探讨如何在Android中将...