处理方案:webview 闪白屏问题

先说一种比较尴尬的做法,之后说一种非常有效的做法,仿苹果真正的做法.

android:layerType=”software”
这句加在webview控件里面
说实话,对我没啥用.

然后我用了一个最坑的方案,当然仅仅适合少数人使用,就是你的UI整体是深色
那么你和我一样,我采用黑色的界面当做过渡界面
mWebView.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                v = View.inflate(MainActivity.this,R.layout.fragment_error_replce,null);
                view.addView(v , LinearLayout.LayoutParams.MATCH_PARENT , LinearLayout.LayoutParams.MATCH_PARENT);

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                mWebView.setLayerType(View.LAYER_TYPE_HARDWARE,null);
                view.removeView(v);
            }}

我的那个R.layout.fragment_error_replce这个界面,背景黑色,其他啥也没写
然后我试过,如果用户在4G情况下,这个是可以的,如果网络很差,那么非常炸.
这个时候,我推荐用终极必杀方案:让给你HTML的开发少年,让他改采用DCloud技术来处理,这样就过渡,使用效果非常贴近原生了,当然使用学习成本高昂.看DCloud的时候,不会用的时候,可以关注我的专栏,比官方文档好多了.

第二种,真正有效的终极方案:
先说说为什么,因为你点击网页毕竟是在加载的,有一个过程,那么这个过程所以的硬件加速,软件加速是完全能解决的吗,我认为不可以,所以,我认为真正有效的办法就是.让给加载,但是我不给你看到,我用进度条的形式来加载.

我有二个页面,第一个页面,跳第二个页面.我第一个页面顶部写一个加载进度条,加载完了那么我就给你第二页的内容,没加载完,我就不动.


mWebView.setWebChromeClient(new WebChromeClient(){

        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if(newProgress==100){
                pg.setVisibility(View.GONE);
            }
            else{
                pg.setVisibility(View.VISIBLE);
                pg.setProgress(newProgress);
            }

        }});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值