Загрузка изображений из кеша, но возврат на пустой экран - PullRequest
2 голосов
/ 26 сентября 2011

Я пробую пример, полученный с здесь .В примере показано, как отобразить изображение, которое больше, чем экран, и экран работает как окно, позволяя пользователю просматривать изображения с помощью прокрутки.Однако то, чего я хочу достичь, похоже на то, что вместо одного изображения я попытался объединить 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 не используется для отображения изображений.

1 Ответ

0 голосов
/ 26 мая 2012

Для всей моей загрузки ленивых изображений я использую Prime .

...