WebViews en ViewPager no se cargan / representan hasta que se muestra la página

Yo uso un ViewPager con muchas WebViews, es para mostrar un ePub. Mi problema es que los WebViews son sólo renderizado / cargado (no estoy muy seguro) cuando su página correspondiente se vuelve visible. Después de esto, la página no necesita ser vuelto a renderizar hasta que se destruye desde ViewPagerAdapter. La consecuencia es que siempre hay una página en blanco por un tiempo. ¿Cómo puedo pre-procesar la página que se desplaza suave a próxima webView (que no se prestó antes).

Este es mi 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 se extiende desde WebView ind implementa un método loadContentDocument que carga el contenido a través de loadDataWithBaseURL.

Edit: En activity-oncreate el setOffscreenPageLimit se establece en 3

  viewPager.setOffscreenPageLimit(3); 

Para señalar cuál es el problema, hice un pequeño video en YouTube

Desde el segundo 4 se puede ver que cada página se representa sólo cuando ya está visible. Cuando vuelva todo está bien.

3 Solutions collect form web for “WebViews en ViewPager no se cargan / representan hasta que se muestra la página”

Tuve el mismo problema y lo arreglé desactivando la aceleración de hardware para la vista web:

 webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

Ver WebView dentro de ViewPager o ScrollView – extraño error de renderizado en Android 3.0+

Puse algunos pensamientos en esto. Desplazamiento de la pantalla de 1 píxel sería la página derecha:

  class SomeClass implements OnPageChangeListener { private ViewPager viewPager; ... viewPager = ... viewPager.setOnPageChangeListener(this); ... @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_IDLE) { // viewpager finished scrolling to a page viewPager.scrollBy(1, 0); } } } 

Tendrías que comprobar si vienes de derecha o izquierda y de acuerdo con este desplazamiento de -1 o 1 píxeles (la página de donde vienes se quedará en la memoria, por lo que no es necesario volver a cargarla). Sólo en el primer desplazamiento (después de abrir la aplicación) el problema descrito anteriormente aún persistirá.

Desventaja: puede ver la página desplazándose 1 píxel, si se ve muy de cerca.

Alguien con más tiempo que yo podría bucear en el código de Android para ver qué sucede exactamente cuando 1 píxel entra en la pantalla, e imitar algunos de este comportamiento.

Establezca esta propiedad para su aplicación en el archivo de manifiesto

Android: hardwareAccelerated = "false"

  • ¿Cómo puedo encontrar la cantidad de datos que se transfieren cuando hago una llamada de servicio web desde mi aplicación android?
  • Android Fatal señal 11 (SIGSEGV) en 0x00000040 (código = 1) Error
  • Android cómo enviar int y doble como namevaluepair como http post
  • Excepción de puntero nulo que hace difícil pasar un arreglo usando ksoap
  • Android Webview goback () problema con el método loadDataWithBaseURL
  • ¿Cuáles son las mejores prácticas para diseñar servicios web para aplicaciones móviles (en particular Android)?
  • Android WebView pierde cookies en los redireccionamientos
  • Llamar al servicio web WSDL mediante el uso de retrofit android
  • Android ViewPager + Webview, ClassCastException! Necesita una vista web en un viewpager
  • Asegurar las APIs de webservice RESTful de Spring de acceso no autorizado?
  • ¿Son las aplicaciones IOS y Android con Webview sólo consideradas híbridas o aplicaciones Web?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.