Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“网络视图”;闪烁;如果启用硬件加速,则为白色背景(Android 3.0+;)_Android_Webview_Android 3.0 Honeycomb_Android 4.0 Ice Cream Sandwich_Hardware Acceleration - Fatal编程技术网

“网络视图”;闪烁;如果启用硬件加速,则为白色背景(Android 3.0+;)

“网络视图”;闪烁;如果启用硬件加速,则为白色背景(Android 3.0+;),android,webview,android-3.0-honeycomb,android-4.0-ice-cream-sandwich,hardware-acceleration,Android,Webview,Android 3.0 Honeycomb,Android 4.0 Ice Cream Sandwich,Hardware Acceleration,我对WebView(Android 3.0+)有一个问题,WebView在显示我的黑色背景(“闪烁”)之前总是显示白色背景。以下是我的简单测试代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webView = new WebView(this); webView.setBackgroundColor(Co

我对WebView(Android 3.0+)有一个问题,WebView在显示我的黑色背景(“闪烁”)之前总是显示白色背景。以下是我的简单测试代码:

@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);
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
WebView WebView=新的WebView(此);
setBackgroundColor(Color.BLACK);
setContentView(网络视图);
loadWebView(webView);
webView.loadDataWithBaseURL(“localhost://”和“+
“正文{背景色:#000}img{最大宽度:100%}”+
"" +
"" +
"", 
“文本/html”、“UTF-8”、空);
}
我尝试过很多解决这个问题的方法,但都不走运

PS:如果关闭硬件加速,则不会出现问题。有谁有同样的问题并解决了吗


谢谢。

我已经为应用程序启用了硬件加速,并为活动禁用了它。此外,如上所述,我将背景设置为
null
。它现在适合我了

另一种方法(未测试):将图层类型设置为软件渲染,并将背景设置为
Color.TRANSPARENT
(或
0
):
webview.setLayerType(View.layer\u type\u software,null)


格里茨·托尔斯滕(Greetz Thorsten)

这显然是安卓版本3的可怕“功能”。即使是官方应用程序谷歌阅读器也包含这种白色闪光。解决方案是禁用活动的硬件加速,其中需要使用快速绘图web视图

在web视图中也有类似的问题。 我做过冰激凌三明治,把minSdk=13放在安卓清单上对我很有用。
试着用它来做实验。我猜SDK中有一些bug。

我发现最有效的修复方法是在布局膨胀后设置透明背景色:

webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
是的,这是一个彻底的黑客攻击,但这是我发现的唯一一个在不禁用硬件加速的情况下工作良好的解决方案

请注意,这不会通过在XML中设置背景来起作用

这已经在Jellybean中解决了,尽管一些用户报告在KitKat中看到了这一点。检查您是否未禁用硬件加速,如果问题确实消失,您可能希望将该代码包装在条件语句中,以仅针对较旧的设备:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
    webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
}
if(Build.VERSION.SDK\u INT
在Android 4.4.4上有这个问题,这里的其他解决方案都不起作用。不管怎样,我一直在玩弄
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)),之前,它仍然给了我一点白光

就像这样:

WebView web=(WebView)findViewById(R.id.web);
web.setBackgroundColor(0xff000000);

我也有同样的问题,你能找到解决方案吗?我们仍然没有解决方案/解决办法。这里有报道:我在这里解决了我的问题,webView.setBackgroundColor(0);你试过了吗?我试过了,但不起作用。仅供参考:此错误已在Jelly Bean中修复。LAYER_TYPE_软件未声明抛出exceptionwebview.setLayerType(View.LAYER_TYPE_软件,null);API 11是否只是一个警告,将layer type设置为null将禁用硬件加速,从而在WebView中播放视频!我花了好几个小时才弄明白为什么没有播放视频。我打电话给webView.setBackgroundColor(Color.TRANSPARENT);但这并不奏效。但是,在使用Color.argb(1,0,0,0)@PaulLammertsma时不再闪烁。我在kitkat中看到了这个问题,所以包装代码并检查最多有个jellybean是错误的……您好。这个补丁在4.4.4(Nexus5)中对我有效。我在4.4.4中的web视图中也遇到了这个闪烁的问题。我可以确认标准WebView在Lollypop上仍然存在问题(我正在使用Unity3D的UniWebView插件),但这确实解决了这个问题。7年后,我在使用setLayerType(硬件,…)的WebView中仍然存在同样的问题与kotlin一起导致白色闪光。不幸的是,到目前为止,此线程中的任何解决方案都不起作用。谢谢!但我有一个问题:webview内容现在是不可见的(显然),直到它完全完成加载。如果我的内容中有很多图像需要一些时间才能加载,那么在加载所有图像时,整个内容都是不可见的。我希望在加载图像时立即显示内容,因为webview将很好地显示其余内容,并在完成后添加图像。但是这种方法不起作用,因为我们隐藏了它。有办法解决这个问题吗?我尝试在onPageStarted中将其显示,但这会返回白色闪烁:(不确定如何实现,因为我从assets文件夹加载本地HTML文件时没有遇到此问题。也许您可以尝试某种重定向?(即加载一个页面,然后重定向到另一个页面)