多くの WebView で ViewPager を使用します。これは、ePub を表示するためのものです。私の問題は、対応するページが表示されるようになると、WebViews がレンダリング/ロードされるだけです (よくわかりません)。この後、ViewPagerAdapter からページが破棄されるまで、ページを再レンダリングする必要はありません。その結果、しばらくの間、常に白いページが表示されます。次の webView にスムーズにスクロールするページを事前にレンダリングするにはどうすればよいですか (以前はレンダリングされませんでした)。
これは私のPagerAdapterです:
public class MagazineReaderPagerAdapter extends PagerAdapter {
private MagazineReaderActivity activity;
private EpubDocument epub;
public MagazineReaderPagerAdapter(Context ctx, EpubDocument epub)
{
activity = (MagazineReaderActivity) ctx;
this.epub = epub;
}
@Override
public int getCount() {
return epub.getContentDocuments().size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ReaderWebViewMulti view = new ReaderWebViewMulti(activity);
view.loadContentDocument(epub.getContentDocuments().get(position), epub);
((ViewPager) container).addView(view, 0);
return view;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
}
ReaderWebViewMulti は WebView から拡張され、loadDataWithBaseURL を介してコンテンツをロードするメソッド loadContentDocument を実装します。
編集: activity-oncreate で setOffscreenPageLimit が 3 に設定されている
viewPager.setOffscreenPageLimit(3);
問題が何であるかを指摘するために、YouTubeで小さなビデオを作成しました
2 番目の 4 から、すべてのページが既に表示されているときにレンダリングされていることがわかります。私が戻ったとき、すべてがうまくいっています。