2
我試着從here得到的例子。該示例顯示瞭如何顯示比屏幕更大的圖像,以及屏幕如同窗口一樣,允許用戶通過滾動來查看圖像。然而,我想要達到的是類似的,而不是一個單一的圖像,我試圖將18個較小的圖像(171X205)組合成一個單一的圖像。我能夠做到這一點,但爲了節省從服務器下載圖像的加載時間,我緩存了圖像。繼承人的問題,我似乎無法在屏幕上顯示圖像,即使圖像確實緩存。因此,我通過從可繪製文件夾中提取圖像嘗試了其他方法,但仍出現同樣的問題。有沒有人有任何想法如何去解決這個問題?從緩存中加載圖片但返回空白屏幕
的碼A片段從緩存中加載的圖像:
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的是用於顯示圖像。
我爲我的一些項目使用緩存。發佈您用於緩存每個映像下載時的代碼。併發布您從緩存中檢索它們的代碼。 –
其實是對的[這裏](http://stackoverflow.com/q/7543928/918197) – user918197
好吧快問一下。你是如何加載圖像?像從18個獨立的網址?我經常使用緩存,並且可能有更簡單的方法。 –