最近在开发一个导购项目,需要用到ANDROID系统来进行开发。
第一次ANDROID开发这么大项目,即兴奋又激动。
在开发过程中,调用图片遇到了一些问题,经过几个小时的挖掘与测试总算解决。
以下四种方法的情景,假设有个 product111.jpg 我要通过 listview 方式展示出来。
一、调用res下drawable目录的图片
drawable 为res的drawable目录
product111 为图片名
getPackageName() 获取当前包名
int resID = getResources().getIdentifier("product111", "drawable", getPackageName()); // 得到图片的资源ID,res下的所有资源都以ID形式存在于R.java 中。
二、调用assets目录的图片
big 为assets目录下的目录
product111.jpg 为图片名
getImageFromAssetsFile("big/product111.jpg");
//用于将获取assets下的图片
private Bitmap getImageFromAssetsFile(String fileName)
{
Bitmap image = null;
AssetManager am = getResources().getAssets();
try
{
InputStream is = am.open(fileName);
image = BitmapFactory.decodeStream(is);
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return image;
}
在SimpleAdapter 中新增一个setViewBinder接口,代码如下
simpler.setViewBinder(new ViewBinder() {
@Override
public boolean setViewValue(View view, Object datas,
String textRepresentation) {
if(view instanceof ImageView && datas instanceof Bitmap){
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) datas);
return true;
}else
return false;
}
});
三、调用SD下任何目录的图片
big 为sd卡下的目录
product111.jpg 为图片文件名
BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "big/product111.jpg")
在SimpleAdapter 中新增一个setViewBinder接口,代码如下
simpler.setViewBinder(new ViewBinder() {
@Override
public boolean setViewValue(View view, Object datas,
String textRepresentation) {
if(view instanceof ImageView && datas instanceof Bitmap){
ImageView iv = (ImageView) view;
iv.setImageBitmap((Bitmap) datas);
return true;
}else
return false;
}
});
四、调用WEB图片
本文介绍了在Android开发中,如何通过ListView显示图片的四种方法:从res目录、assets目录、SD卡以及网络加载图片。详细阐述了每种方式的实现代码,并提供了在SimpleAdapter中使用ViewBinder进行绑定的示例。
338

被折叠的 条评论
为什么被折叠?



