Android读取assets目录下的所有图片并显示的方法
2014-11-12 09:20
821 查看
本文实例讲述了Android读取assets目录下的所有图片并显示的方法。分享给大家供大家参考。具体方法分析如下:
在assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
4.调用AssetManager.close() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作。
下面看一下在Activity中使用的示例代码:
String[] list_image = null;
try {
//得到assets/processedimages/目录下的所有文件的文件名,以便后面打开操作时使用
list_image = context.getAssets().list("processedimages");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
for(int i=0;i<list_image.length;++i)
{
InputStream open = null;
try {
String temp = "processedimages/"+list_image[i];
open = context.getAssets().open(temp);
Bitmap bitmap = BitmapFactory.decodeStream(open);
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", list_image[i]);
map.put("iv", bitmap);
map.put("bg", R.drawable.phone_vip_yes);
map.put("cate_id",i);
cateList.add(map);
// Assign the bitmap to an ImageView in this layout
} catch (IOException e) {
e.printStackTrace();
} finally {
if (open != null) {
try {
open.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样所有的map中的关键字“iv"处理论上就保存了我们读取的bitmap,可以结果并非如此,大家应该注意到了在”bg“关键字处我们也保存了一个图片,只不过它是通过R.drawable.方式获取的,实验证明这种方式是可以成功读取并显示的。为什么从assets中读取的bitmap不能显示呢?
解决办法是:
实现 ViewBinder接口,对两种的资源id和bitmap 情况进行说明:
@Override
public boolean setViewValue(
View view,
Object data,
String textRepresentation) {
// TODO Auto-generated method stub
if((view instanceof ImageView) && (data instanceof Bitmap)) {
ImageView imageView = (ImageView) view;
Bitmap bmp = (Bitmap) data;
imageView.setImageBitmap(bmp);
return true;
}
return false;
}
});
这样就可以了。
还有一种情况是,我们在非Activity类中读取assets文件下的内容,这个时候就得把调用者(Activity类)的context传递过去,然后在这个非Activity类中使用context.getAssets()方式调用就行了。
举个简单例子:
我们有一个HomeActivity,然后我们它里面调用GetData.initdata(HomeActivity.this).
在GetData类的initdata方法肯定是这样定义的:
{
//other codes...
String[] list_image = null;
try {
//得到assets/processedimages/目录下的所有文件的文件名,以便后面打开操作时使用
list_image = context.getAssets().list("processedimages");//attention this line
} catch (IOException e1)
{
e1.printStackTrace();
}
//other codes.....
}
因为getAssets方法是Context下的方法,在非Activity类中是不能直接使用的。
希望本文所述对大家的Android程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- 读取安卓assets目录下的所有图片并显示
- Android显示assets目录下的图片
- Android读取assets目录下所有文件
- android读取Assets图片资源保存到SD卡然后显示到ImageView里 实例
- Android开发实现读取assets目录下db文件的方法示例
- 【Android】读取sdcard卡上的所有图片并且显示,读取的过程有进度条显示
- android 获取手机中的所有图片或某一目录下的图片方法
- Android中把assets目录下所有图片转换成bitmap存入list集合
- Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法
- Android中图片无法显示,读取图片的方法
- android FileReader 读取图片资源显示预览失败解决方法
- Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法
- 遍历目录下所有图片文件显示的方法.(已废弃)
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- Android 读取Assets中图片
- 用ASP,FSO显示当前根目录下所有文件,目录列表的方法
- Android显示GIF图片的方法
- Android开发之--读取文件夹下图片生成略缩图并点击显示大图
- android读取SD卡下面所有的TXT文件名,listView显示出来。
- Android 读取Assets中图片