Android 从缓存加载图像,但返回一个空白屏幕
我尝试了我从中得到的例子。这个例子展示了如何显示一个比屏幕大的图像,屏幕就像一个窗口,允许用户通过滚动查看图像。然而,我想要实现的是相似的,我尝试将18个较小的图像171X205组合成一个单独的图像,而不是一个单独的图像。我能够做到这一点,但为了节省从服务器下载图像时的加载时间,我缓存了图像。这里的问题,我似乎不能显示在屏幕上的图像,即使图像确实是缓存。因此,我尝试了从drawable文件夹中获取图像的其他方法,但仍然出现相同的问题。有人知道如何着手解决这个问题吗 从缓存加载图像的代码片段:Android 从缓存加载图像,但返回一个空白屏幕,android,image,caching,bitmap,Android,Image,Caching,Bitmap,我尝试了我从中得到的例子。这个例子展示了如何显示一个比屏幕大的图像,屏幕就像一个窗口,允许用户通过滚动查看图像。然而,我想要实现的是相似的,我尝试将18个较小的图像171X205组合成一个单独的图像,而不是一个单独的图像。我能够做到这一点,但为了节省从服务器下载图像时的加载时间,我缓存了图像。这里的问题,我似乎不能显示在屏幕上的图像,即使图像确实是缓存。因此,我尝试了从drawable文件夹中获取图像的其他方法,但仍然出现相同的问题。有人知道如何着手解决这个问题吗 从缓存加载图像的代码片段: f
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);
}
}
}
我正在画布上绘图,因此没有使用ImageView来显示图像。对于我使用的所有惰性图像加载。对于我使用的所有惰性图像加载。对于我的一些项目,我使用缓存。发布下载时用于缓存每个图像的代码。并发布从缓存中检索它们的代码。实际上这是一个正确的问题。你是如何加载图像的?比如18个不同的URL?我经常使用缓存,可能有更好的方法。在加载图像时添加了代码片段。puzzle只是一个ArrayList,用于保存所有18个图像,无论是来自缓存还是来自服务器,都是缓存中不存在的图像。再说一遍,您是通过URL还是其他方式从18个不同的图像加载这些图像吗?我的一些项目使用缓存。发布下载时用于缓存每个图像的代码。并发布从缓存中检索它们的代码。实际上这是一个正确的问题。你是如何加载图像的?比如18个不同的URL?我经常使用缓存,可能有更好的方法。在加载图像时添加了代码片段。puzzle只是一个ArrayList,用于保存所有18个图像,无论是来自缓存还是来自服务器,都是缓存中不存在图像。再说一遍,您是通过URL还是什么从18个不同的图像加载这些图像?
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;
}
}