studio - WebView "parpadeando" con fondo blanco si la aceleración de hardware está habilitada(Android 3.0+)
setting hardware acceleration viva video (6)
Descubrí que la solución más efectiva para esto, mencionada aquí por primera vez , era establecer un color de fondo transparente una vez que se ha inflado el diseño:
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
Sí, es un truco total, pero es la única solución que he encontrado que funciona bien sin deshabilitar la aceleración de hardware.
Tenga en cuenta que esto no funciona configurando el fondo en XML.
Esto se resolvió en Jellybean, aunque algunos usuarios informaron haber visto esto en KitKat. Compruebe que no ha deshabilitado la aceleración de hardware, y si el problema desaparece, probablemente quiera ajustar ese código en una declaración condicional para orientar solo a dispositivos más antiguos:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
}
Tengo un problema con WebView (Android 3.0+), que WebView siempre muestra un fondo blanco antes de mostrar mi fondo negro ("parpadeando"). Aquí está mi código de prueba simple:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
webView.setBackgroundColor(Color.BLACK);
setContentView(webView);
loadWebView(webView);
webView.loadDataWithBaseURL("localhost://", "<html><head>" +
"<style>body {background-color: #000}img{max-width:100%}</style></head>" +
"<body>" +
"<img src=/"http://developer.android.com/images/practices/actionbar-phone-splitaction.png/" />" +
"</body></html>",
"text/html", "UTF-8", null);
}
He intentado muchas soluciones para deshacerme de este problema, pero no tuve suerte.
PD: el problema no aparecerá si la aceleración de hardware está desactivada. ¿Alguien tiene el mismo problema y lo resolvió?
Gracias.
He habilitado la aceleración de hardware para la aplicación y la he desactivado para la actividad. Además configuré el fondo como null
, como se mencionó anteriormente. Funciona para mi ahora.
Otro enfoque (no probado): establezca el tipo de capa para la representación de software y establezca el fondo en Color.TRANSPARENT
(o 0
): webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Greetz Thorsten
Obviamente es una "característica" horrible de la versión de Android> 3. Incluso la aplicación oficial Google Reader contiene este flash blanco. La solución es deshabilitar la aceleración de HW para la actividad, donde necesita usar una vista web de dibujo rápida.
Solo ve así:
WebView web=(WebView)findViewById(R.id.web);
web.setBackgroundColor(0xff000000);
Tenía el mismo problema con la vista web. Trabajé en Ice Cream Sandwich y poner minSdk = 13 en Android Manifest funcionó para mí. Intenta experimentar con eso. Supongo que hay algún error en SDK.
Tenía este problema en Android 4.4.4 y ninguna de las otras soluciones aquí funcionaba. Estuve jugando con la función onPageFinished()
todos modos, así que podría intentar algo que sea a prueba de balas:
Puse esto en el onCreateView()
del fragmento que aloja el WebView:
webView = (WebView) v.findViewById(R.id.webView);
webView.setVisibility(View.INVISIBLE);
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
webView.setWebViewClient( new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
view.setVisibility(View.VISIBLE);
super.onPageFinished(view, url);
}
});
La idea es simplemente ocultar WebView hasta que se cargue la primera página. Sin embargo, todavía me dio un pequeño destello de blanco hasta que también agregué la solución provista por Paul Lammertsma, webView.setBackgroundColor(Color.argb(1, 0, 0, 0));