动态加载图像

时间:2010-08-31 12:06:03

标签: android

我陷入了一种特殊的情况,同时开发了android中的应用程序。

我的应用程序,从互联网下载图像,并在应用程序中以缩略图格式填充图像。

由于我不知道设计时图片/缩略图的数量,我使用下面提到的代码动态创建图像视图控件。

ArrayList<String> parsedPhoto=oPhotoList.getPhoto();
RelativeLayout media = (RelativeLayout)findViewById(R.id.media);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);

for(int iCounter=0;iCounter<parsedPhoto.size();iCounter++)
{
    bitmap=oParser.DownloadImage(parsedPhoto.get(iCounter));
    ImageView img = new ImageView(this);
    img.setImageBitmap(bitmap); 
    media.addView(img,p);
}

但在这种情况下,我的所有图像都相互重叠。 其中我希望每行显示3个图像,这是我能够通过xml实现的。

有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

使用GridView和适配器,而不是使用RelativeLayout。它不仅可以提高效率,而且还可以添加许多其他功能(如果已经存在,则不下载图像,下载元数据等)

答案 1 :(得分:0)

问题是您没有在RelativeLayout中找到imageview。使用此布局,您必须指定要在何处找到每个元素。如果你不这样做,他们会在同一个位置。

像GridView这样的视图可以让您以更简单的方式完成此任务。

但是,如果您愿意,可以使用RelativeLayout。您可以使用RelativeLayout.LayoutParams类的addRule()方法来指定每个图像的位置。例如:

首先,您可以存储添加图像的最后一个ID。

// The id of the first image added in the last row
int lastFirstId;
// The id of the last image added
int lastId;

然后,创建并指定imageview的位置(第一个图像有几个例外):

RelativeLayout.LayoutParams params = new RelativeLayoutParams();
params.setRule (params.RIGHT_OF, lastId);
params.setRule (params.BELOW, lastFirstId);
img.setLayoutParams(params);

我希望它有所帮助