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.

  • Obtener código de estado HTTP en Android WebView
  • Descargar pdf a través de un navegador web y una vista web
  • El navegador de Android corta el esquema https: // del calificador completo
  • ¿Cómo manejar páginas web "infinitas"?
  • ¿Hay alguna manera de interceptar JavaScript activado URL en webview?
  • Android: al salir de un WebView, el audio sigue reproduciéndose
  • ¿Puede alguien dar un ejemplo exacto de la implementación de webview en android
  • Obtiene la última URL cargada de webview sin hacer un webView.goBack () en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.