我使用带有许多 WebView 的 ViewPager,它用于显示 ePub。我的问题是 WebViews 只是被渲染/加载(我不太确定)他们相应的页面变得可见。在此之后页面不需要重新渲染,直到它从 ViewPagerAdapter 中销毁。其后果是总有一小会儿的白页。如何将它平滑滚动到下一个 webView 的页面预渲染(之前未渲染)。
这是我的寻呼机适配器:
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 扩展而来,实现了一个 loadContentDocument 方法,该方法通过 loadDataWithBaseURL 加载内容。
编辑: 在activity-oncreate setOffscreenPageLimit 设置为3
viewPager.setOffscreenPageLimit(3);
为了指出问题所在,我在YouTube 上制作了一个小视频
从第 4 秒开始,您可以看到每个页面在已经可见时才被渲染。当我回去时,一切都很好。