私はリモートビューの遅延読み込みを行うカスタムListViewを持っています。リスト項目をクリックすると、新しいアクティビティが開始され、画像がWebビューに表示されます。 問題は、画像がlistviewアダプタによってプリロードされていても、webviewは常に画像を読み込みます。 WebViewに画像がロードされるようにするには、がプリロードされていない場合にのみ使用してください。レイジーロードされた画像がファイルキャッシュに格納されているwebviewでプリロードされたビットマップを表示
public void DisplayImage(String url, ImageView imageView)
{
imageViews.put(imageView, url);
Bitmap bitmap=memoryCache.get(url);
if(bitmap!=null)
imageView.setImageBitmap(bitmap);
else
{
queuePhoto(url, imageView);
imageView.setImageResource(stub_id);
}
}
:
public FileCache(Context context){
//Find the dir to save cached images
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
else
cacheDir=context.getCacheDir();
if(!cacheDir.exists())
cacheDir.mkdirs();
}
public File getFile(String url){
//I identify images by hashcode. Not a perfect solution, good for the demo.
String filename=String.valueOf(url.hashCode());
//Another possible solution (thanks to grantland)
//String filename = URLEncoder.encode(url);
File f = new File(cacheDir, filename);
return f;
}
ありがとう、私はshouldInterceptRequestメソッドを試していますが、このmetodは決して呼び出されません!なにか提案を? –
Bugger、それはHoneycomb +の方法だと言って忘れていました...古いデバイスでは呼び出されません。あなたはおそらく私の最初の提案に従わなければならないでしょう。あるいは、ローカルに存在するかどうかを確認するために、画像URLを 'WebView'(これはあなたがそこに表示しているものだけです)に渡す前にチェックすることもできます。そうであれば、ローカルURLを渡します。それ以外の場合はリモートURLを渡します。 –