我尝试了从here得到的例子。该示例显示了如何显示比屏幕更大的图像以及像窗口一样的屏幕,允许用户通过滚动查看图像。然而,我想要实现的是类似的,而不是单个图像,我试图将18个较小的图像(171X205)组合成一个单独的图像。我能够做到这一点,但为了节省从服务器下载图像的加载时间,我缓存了图像。继承人的问题,即使图像确实被缓存,我似乎无法在屏幕上显示图像。因此,我通过从drawable文件夹中提取图像来尝试其他方法,但仍然出现相同的问题。有谁知道如何解决这个问题?
从缓存加载图片的代码片段:
for(int i =0; i<18; i++)
File cacheMap = new File(context.getCacheDir(), smallMapImageNames.get(i).toString());
if(cacheMap.exists()){
//retrieved from cached
try {
FileInputStream fis = new FileInputStream(cacheMap);
Bitmap bitmap = BitmapFactory.decodeStream(fis)
puzzle.add(bitmap);
}catch(...){}
}else{
Drawable smallMap = LoadImageFromWebOperations(mapPiecesURL.get(i).toString());
if(i==0){
height1 = smallMap.getIntrinsicHeight();
width1 = smallMap.getIntrinsicWidth();
}
if (smallMap instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable)smallMap).getBitmap();
FileOutputStream fos = null;
try {
cacheMap.createNewFile();
fos = new FileOutputStream(cacheMap);
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
puzzle.add(bitmap);
}
}
}
从服务器检索图像的功能
private Drawable LoadImageFromWebOperations(String url) {
// TODO Auto-generated method stub
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
我正在绘制画布,因此没有使用ImageView来显示图像。