问题:我有一定数量的ImageViews,我正在动态添加如下:

for (int i=2; i < result.size(); i++) {

// instantiate image view

ImageView mImageView = new ImageView(this);

mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

mImageView.setBackgroundResource(R.drawable.selectable_background_theme);

mImageView.setOnClickListener(this);

// download image and display it

mImageLoader.get(result.get(i), ImageLoader.getImageListener(mImageView, R.drawable.ic_logo, R.drawable.ic_action_refresh));

// add images to container view

mLlDescContent.addView(mImageView);

}

想要能够点击图像并在全屏幕中将其显示在另一个活动中的内容.我已经阅读了几种方法,例如传递Uri或将实际的Bitmap作为字节数组传递.

问题:如何获取我使用Volley ImageLoader下载的Uri或实际位图. LruCache我使用的是BitmapLruCache,我在这里找到:Android Volley ImageLoader – BitmapLruCache parameter?.有人可以用这个或任何想法来帮助我实现我的目标.

我在上面的代码之后尝试了这个并没有:

Bitmap mBitmap = VolleyInstance.getBitmapLruCache().getBitmap(result.get(2));

mIvAuthorImg.setImageBitmap(mBitmap);

编辑:如果我重新请求图像:

mImageLoader.get(result.get(i), ImageLoader.getImageListener(mImageView, R.drawable.ic_logo, R.drawable.ic_action_refresh));

图像是从缓存加载的,但是如果我尝试直接从缓存中访问图像:

Bitmap mBitmap = VolleyInstance.getBitmapLruCache().getBitmap(result.get(2));

mIvAuthorImg.setImageBitmap(mBitmap);

图像不加载.我希望能够操作图像,例如在将图像传递给下一个活动之前调整大小.

解决方法:

Volley依赖于您实现缓存以实现成功的高效缓存.

ImageLoader的构造函数接收ImageCache,这是Volley中的一个简单接口,用于保存和加载位图.

public ImageLoader(RequestQueue queue, ImageCache imageCache)

来自ImageCache接口的Javadoc的引用:

Simple cache adapter interface. If provided to the ImageLoader, it will be used as an L1 cache before dispatch to Volley. Implementations must not block. Implementation with an LruCache is recommended.

达文是对的.如果您请求图像并且它存在于缓存中,则它将从缓存而不是从Web加载.这应该是您的情况,因为您正在加载和显示图像,如果单击该图像应该从新活动的缓存中显示.

你说它不起作用,也许你的实现没有针对你的用例进行优化.你使用什么样的缓存?您是否有Volley团队推荐的集中式RequestQueue和ImageLoader?

看看this question,这与你的不完全相同,但对你有所帮助.它有一个简单的LRU缓存实现.

希望有所帮助!

编辑:

Volley的观点不是担心实施细节.你想要一个图像?它将以最好和最快的方式为您加载它(从内存中,如果它不是通过网络).这正是你应该看的方式.检索缓存然后查找它不是正确的方法IMO.

现在,如果你想操作位图,你有几个选项,最好的IMO实现你自己的Image Listener将它传递给get()方法而不是默认方法.

像这样的东西:

public class MyImageListener implements ImageListener() {

@Override

public void one rrorResponse(VolleyError error) {

// handle errors

}

@Override

public void onResponse(ImageContainer response, boolean isImmediate) {

Bitmap bitmap = response.getBitmap();

if (bitmap != null) {

//

// manipulations

//

// assuming mView is a reference to your ImageView

mView.setImageBitmap(bitmap);

} else {

// display placeholder or whatever you want

}

}

}

来自Javadoc:

The call flow is this:

Upon being attached to a request, onResponse(response, true) will be invoked to reflect any cached data that was already available. If

the data was available, response.getBitmap() will be non-null.

After a network response returns, only one of the following cases will happen:

onResponse(response, false) will be called if the image was loaded.

or

onErrorResponse will be called if there was an error loading the image.

标签:android,bitmap,android-imageview,android-volley

来源: https://codeday.me/bug/20190529/1177528.html

android volley缓存图片,android – 如何获取使用Volley ImageLoader下载的缓存位图?相关推荐

  1. android系统通过图片绝对路径获取URI的三种方法

    老马的技术博客 android系统通过图片绝对路径获取URI的三种方法 最近做项目要通过图片的绝对路径找到图片的URI,然后删除图片,小小总结一下获取URI的方法,亲自试验在 android 4.1. ...

  2. android sdcard 压缩图片,android如何往SDCard中存取图片

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  3. android 聊天背景图片,Android 实现从本地读取图片更改聊天背景

    现在很多社交软件都有这个功能,因为本次我参加一个比赛也是要做一个社交软件,所以我就"画蛇添足"的添加了这个一个功能,因为我也是个Android初学者,所以说修改bug浪费了我至少1 ...

  4. android 点动态显示图片,Android用RecyclerView实现动态添加本地图片

    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(Pa ...

  5. android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能

    Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...

  6. android xml 圆形图片,Android ImageView实现圆角,圆形图片

    UI设计中,为了有更好的效果,用户的头像很多以圆形方式显示,其实现的步骤 1 在res/values/attrs中添加 2 自定义View,CustomImageView.java package c ...

  7. android自适应拉伸图片,Android 启动页-解决图片被拉伸和压缩问题,适配虚拟导航栏...

    Android 启动页设置非常简单 //styles.xml 设置主题 @drawable/bg_splash true //activity使用主题,这时点击app图标,就会显示@drawable/ ...

  8. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  9. android生成png图片,Android 中将 base64图片 解码为.png图片

    android 中将 "base64图片" 解码为".png"图片 参考: 方法一 String base64Img = ""; // 若包 ...

最新文章

  1. Mobileye_EyeQ4功能和性能
  2. FATFS配置长文件名,为何跟编码转换有关
  3. ospf多区域配置为什么ping不通_「实战」动态路由多区域 OSPF 基本配置,一分钟了解下...
  4. android内存测试方法,Android内存测试方法.doc
  5. 随风潜入夜,润物细无声
  6. IDE工具的[多行光标编辑模式]
  7. C# string byte数组互转;string byte[]互转
  8. mysql 中的split函数_mysql中split函数
  9. 双击计算机文档,电脑双击文件都是打开属性窗口怎么办
  10. ma-云计算 大数据 mapreduce概念和关系
  11. Cocos2d之Box2d基础知识
  12. OpenCV-透视变换及对二维点求透视变换之后的坐标
  13. SlashData开发者工具榜首等你而定!!!
  14. 招聘网站数百万条敏感数据泄露,简历、身份证扫描件统统曝光
  15. C#中DateTime.Ticks
  16. 【ArcGIS教程02】HTML弹窗挂接显示调研照片
  17. 任正非是否拿到未来的船票?
  18. 如何靠代码发家致富?——10种可以赚钱的途径
  19. Python OpenCV 彩色图像与灰度图像的转换
  20. React全家桶+AntD 实战二

热门文章

  1. t3服务器补丁文件夹在哪,打了最新补丁之后,T3软件无法打开!并且目录里没有补丁脚本文件夹!...
  2. vscode注释模板
  3. 使用iPerf测试网络吞吐量
  4. linux 小包 性能,网络数据小包吞吐量测试与分析
  5. 基于jQuery实现幻灯片切换效果
  6. 基于微信小程序的课堂管理助手设计与实现-计算机毕业设计源码+LW文档
  7. 2022-3-16 MIT 6.828 Lab 2: Memory Management | Part 3: Kernel Address Space | Exercise 5
  8. 医院HIS系统与电子病历系统有什么关系
  9. android 中如何用aes算法加密解密zip文件,android中AES加解密的使用方法
  10. 东方明珠,上海滩传媒旗舰的华丽转身