Android 数据库中读取图片名称加载相应的资源
android的开发中会遇到这么一种需求,就是把图片存储到本地,每次加载的时候通过保存的图片的名称加载图片,或者利用请求到的/存储数据库存储的名称去加载图片 。
开始我把数据放在了assets中,开始我发现这种方法对于一张两张的图片就无所谓但是图片一多就会出现明显的卡顿,检查发现因为每次 mAssetManager.open().这个方法返回的是inputstream 是个流然后把流用 BitmapFactory.decodeStream()转化成Bitmap的形式。
对此 总结了两种方式 。
第一种方案:
把所需要加载的文件放入raw文件夹中 然后getIdentifier()方法获取图片的ID
//第一个参数文件名称(不加后缀), 第二个参数文件夹名称,第三个参数包名public int getImageID(String name) {int id = mContext.getResources().getIdentifier(name, "raw",mContext.getPackageName());return id;}
如果说文件是在Drawable中呢 ?那么我们使用的时候只需要改下文件夹既可以了
//第一个参数文件名称(不加后缀), 第二个参数文件夹名称,第三个参数包名public int getImageID(String name) {int id = mContext.getResources().getIdentifier(name, "drawable",mContext.getPackageName());return id;}
第二种方案:
相对于第一种的方法第二种方案有点复杂而且性能有所降低,利用反射等原理。
1、首先呢我们要把文件所放的目录整体的遍历一遍 存储到Map中
map中存放的是图片的名称和ID
2、使用的时候根据文件夹下的KEY(图片名称)获取对应的id然后利用 openRawResource()方法加载图片
public Map<String, Integer> getRawImage(){Map<String, Integer> map = new HashMap<String, Integer>();Field[] fields = R.raw.class.getDeclaredFields();for (int i = 0; i < fields.length; i++) {try {map.put(fields[i].getName(), fields[i].getInt(R.raw.class));} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}fields = null;return map;} ;
如果是drawable下的图片呢 ? 同理也是一样
public Map<String, Integer> getDrawableImage(){Map<String, Integer> map = new HashMap<String, Integer>();Field[] fields = R.drawable.class.getDeclaredFields();for (int i = 0; i < fields.length; i++) {try {map.put(fields[i].getName(), fields[i].getInt(R.drawable.class));} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}fields = null;return map;} ;
可以下载demo体验下
下载地址 : http://download.csdn.net/detail/u012153184/9673268
Android 数据库中读取图片名称加载相应的资源相关推荐
- dw读取access中的图片_怎样从Access数据库中读取图片?解决办法
当前位置:我的异常网» C# » 怎样从Access数据库中读取图片?解决办法 怎样从Access数据库中读取图片?解决办法 www.myexceptions.net 网友分享于:2013-03-0 ...
- asp.net mvc 从数据库中读取图片的实现代码
首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { publi ...
- ListView中的图片异步加载、缓存
一.ListView的图片异步加载 我们都知道对每一个Weibo Item都有用户头像,而且每一条微博还可能带有图片.如果在加载列表的同时加载图片,这样有几个缺点,第一很费事,界面卡住,用户体验很不好 ...
- React中实现图片懒加载
1. 下载安装懒加载模块 cnpm i react-lazyload --save 2. 在src/assets/目录下放入懒加载占位图 placeholder.gif 3. 在需要使用懒加载 ...
- vue中实现图片懒加载的方法(一)
1.背景: 前几天项目需求实现了图片瀑布流布局,就想着自己再实现图片的懒加载,瀑布流布局配合图片懒加载. 2.懒加载的意义 图片懒加载为的是提升网页性能,减少图片在同一时间请求很多网络图片资源,当然是 ...
- Android Studio中RecycerView依赖库加载问题
依赖包导入思考: 参考资料:recycleview导包问题 打开修改本项目中的build.gradle; 切勿着急添加包,应当提前查看其中的版本号(因为加载的v7包要和其版本保持一致性): 例如: 因 ...
- iOS中GIF图片的加载
Gif图片是非常常见的图片格式,尤其是在聊天的过程中,Gif表情使用地很频繁.但是iOS竟然没有现成的支持加载和播放Gif的类. 简单的上网搜了一下,大概有三种方法: 1.使用UIWebView // ...
- Android下WebView的图片适配加载与文字自动换行处理
相信各位在Android开发中使用WebView加载页面的时候,或多或少会遇到一些网页适配的问题,例如图片过大或者是单行文字过长, 导致网页可以左右拖动,使自己加载出来的网页显得非常的low,下面介绍 ...
- Android开发中根据图片名称获取在drawable中的ID
在Android开发中图片资源是必不可少的,如ImageView需要图片资源的ID,ImageButton需要资源的ID等等,我们可以用R.drawable.XXX可以获取图片资源的ID,但是,在某些 ...
最新文章
- java公平所与非公平所_一张图读懂Java非公平锁与公平锁
- 版式文件 流式文件_银河麒麟操作系统V10全面适配各类流式版式软件
- Cloud Insight 客户案例-晨芯时代科技有限公司
- 从0到1写RT-Thread内核——线程定义及切换的实现
- EtherCAT1.5.2官方文档翻译-第七章
- linux weblogic java_options_使用Linux脚本更新Weblogic部署的应用程序
- python ini
- java 数据库按钮跳转_java,数据库的连接及基本操作
- 解决THINKCMF后台文章的相册图集只能上传一个图片的问题
- c语言定义数组uint,c - 将uint8_t数组转换为C中的uint16_t值 - 堆栈内存溢出
- Dialog屏蔽Esc按键
- 『译』RGB-D Salient Object Detection, A Review『译』
- 打开idea的svn项目弹出Action not found:Subversion.Add提示解决办法
- [原创]关于搭建企业级应用的AJAX框架
- leetcode报错:reference binding to misaligned address 0xbebebebebebec0ba for type ‘int‘, which requir 4
- 开关电源LC滤波器设计
- 基于FPGA的八位数字抢答器
- 小心信用卡公司10个抢钱陷阱
- 使用C#开发Word VSTO外接程序示例
- 计算机专业博士推荐信模板,计算机推荐信模板