Desenfoque de dibujo de WebView en ICS

Estoy haciendo una aplicación que tiene un Webview en línea con otros elementos, anidados en un ScrollView. He notado que en ICS, probando en un dispositivo Galaxy Nexus, el WebView parece estar desconectado del resto de los elementos mostrados cuando se lanza la página, dando como resultado que el WebView aparezca flotando debido a un par de ms de valor Retraso en el dibujo. Esto no sucede en las versiones 2.x de Android (no probado en 3.x). Aquí hay un video del efecto flotante http://www.youtube.com/watch?v=avfBoWmooM4 (se puede ver claramente si se establece en pantalla completa a 1080p)

¿Puede alguien sugerir por qué esto puede suceder, o una solución?

He configurado un proyecto de prueba, a continuación, para demostrar:

package com.martynhaigh.floating_web_view; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; public class FloatingWebViewTestActivity extends FragmentActivity { public final int viewId = 0x12345678; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); FrameLayout frame = new FrameLayout(this); frame.setId(viewId); setContentView(frame, lp); FloatingWebViewICSFragment fragment = new FloatingWebViewICSFragment(); getSupportFragmentManager().beginTransaction().add(viewId, fragment).commit(); } public static class FloatingWebViewICSFragment extends Fragment { private final String htmlBody = "<html><body><p style=\"font-size:1.5em\">This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. This is a test document. </body></html>"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView textView = new TextView(getActivity().getApplicationContext()); textView.setText("Test Activity"); WebView webView = new WebView(getActivity().getApplicationContext()); webView.loadDataWithBaseURL("file:///android_asset/", htmlBody, "text/html", "UTF-8", "about:blank"); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.setScrollContainer(false); TextView textView2 = new TextView(getActivity().getApplicationContext()); textView2.setText("Test Activity"); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); LinearLayout layout = new LinearLayout(getActivity().getApplicationContext()); layout.setLayoutParams(lp); layout.setOrientation(LinearLayout.VERTICAL); layout.addView(textView); layout.addView(webView); layout.addView(textView2); ScrollView scrollView = new ScrollView(getActivity().getApplicationContext()); scrollView.setLayoutParams(lp); scrollView.addView(layout); return scrollView; } } } 

One Solution collect form web for “Desenfoque de dibujo de WebView en ICS”

No sé cómo arreglarlo, pero ahora la razón. El contenido de WebView es representado por android.webkit.WebViewCore en su hilo de trabajo independiente. Se están comunicando entre sí. Cuando WebView necesita una re-render, envía un mensaje de "renderizar" a WebViewCore y cuando WVC está listo, devuelve el resultado. El punto es que su representación no está en sincronía con la prestación de otros elementos de la interfaz de usuario, ya que se realiza en un hilo independiente, no-ui.

Supongo que querían evitar el bloqueo de la ui-hilo con todo el esfuerzo de renderizado. Eso es muy amable. Pero causa otros problemas … como el tuyo.

  • Android Load Cache Only no funciona. Mostrar WebView fuera de línea
  • ¿Es posible almacenar certificado SSL en android webview
  • ¿Cómo se utiliza WebMessagePort como una alternativa a addJavascriptInterface ()?
  • Android: imagen local en la vista web
  • URL de Soundcloud abierta en la aplicación nativa Soundcloud de WebView
  • Los datos no se cargan en WebView pero se cargan después de bloquear - desbloquear el dispositivo
  • ¿Cómo desactivar la interacción con los vídeos html5 en webview o capturar correctamente sus excepciones?
  • Preloading página web en Android (usando WebView?)
  • Shouldoverrideurlloading no se llama Webview Android
  • Error al mostrar comentarios de Facebook en Android WebView mediante HTML local
  • ¿El WebView de Android cifra las contraseñas guardadas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.