如果启用了硬件加速,WebView会以白色背景“闪烁”(Android 3.0+)
我有WebView(Android 3.0+)的问题,WebView在显示我的黑色背景(“闪烁”)之前始终显示白色背景。 这是我简单的testing代码:
@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.comhttp://img.dovov.compractices/actionbar-phone-splitaction.png\" />" + "</body></html>", "text/html", "UTF-8", null); }
我已经尝试了很多解决scheme来摆脱这个问题,但不幸运。
PS:如果硬件加速被closures,问题不会出现。 有没有人有同样的问题,并解决了它?
谢谢。
我发现这里最先提到的最有效的解决方法是在布局膨胀后设置一个透明背景色:
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
是的,这是一个彻头彻尾的破解,但它是唯一的解决scheme,我发现没有禁用硬件加速工作。
请注意,这通过在XML中设置背景不起作用。
虽然有些用户在KitKat上报道过这个问题,但Jellybean已经解决了这个问题。 检查你是否没有禁用硬件加速,如果问题确实消失了,你可能会想把这个代码包装在一个条件语句中,以便只针对较老的设备:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { webView.setBackgroundColor(Color.argb(1, 0, 0, 0)); }
我已经启用了应用程序的硬件加速,并已禁用它的活动。 另外,我将背景设置为null
,如上所述。 它现在适合我。
另一种方法(未经testing):将图层types设置为软件渲染,并将背景设置为Color.TRANSPARENT
(或0
): webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Greetz Thorsten
有这个问题在Android 4.4.4和其他解决scheme没有在这里工作。 无论如何,我正在用onPageFinished()
,所以不妨尝试一下应该是防弹的东西:
我把它放在承载WebView的片段的onCreateView()
中:
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); } });
这个想法只是隐藏WebView,直到加载第一页。 然而,它仍然给了我一个白色的小闪光,直到我还添加了由Paul Lammertsma, webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
Color.argb webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
提供的解决schemewebView.setBackgroundColor(Color.argb(1, 0, 0, 0));
Android版本> 3显然是可怕的“function”。 即使官方应用程序谷歌阅读器包含这个白色的闪存 解决scheme是为活动禁用HW加速,在这里您需要使用快速绘制Web视图。
有与Web视图类似的问题。 我已经在冰淇淋三明治上工作,把AndroidSMS的minSdk = 13放在了我的工作上。 尝试尝试一下。 我想在SDK中有一些错误。