WebVie用法小结

一、WebView控件两个方法:setWebChromeClient和setWebClient

setWebChromeClient主要处理解析,渲染网页等浏览器做的事情。其中WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等。

常用的方法有:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle

示例:添加进度条,使得界面更友好(代码如下)

webView.setWebChromeClient(new WebChromeClient() {  
            @Override  
            public void onProgressChanged(WebView view, int newProgress) {  
                // TODO Auto-generated method stub  
                setTitle("本页面已加载" + newProgress + "%");  
                if (newProgress == 100) {  
                    closeProgressBar();  
                } else {  
                    openProgressBar(newProgress);  
                }  
                super.onProgressChanged(view, newProgress);  
            }  
        });  
    }  
    // 打开进度条  
    protected void openProgressBar(int x) {  
        // TODO Auto-generated method stub  
        setProgressBarIndeterminateVisibility(true);  
        setProgress(x);  
    }  
    // 关闭进度条  
    protected void closeProgressBar() {  
        // TODO Auto-generated method stub  
        setProgressBarIndeterminateVisibility(false);  
    }  

WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来

说包括:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
示例:(匿名内部类实现)

webView.setWebViewClient(new WebViewClient() {  
            @Override  
            public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                // TODO Auto-generated method stub  
                // webView加载web资源  
                view.loadUrl(url);  
                return true;  
            }  
        });  

二、启用支持javascript + web加载页面优先使用缓存加

WebSettings settings = webView.getSettings();        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) 

三、 改写物理按键 返回键的逻辑

@Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
        // TODO Auto-generated method stub  
        if (keyCode == KeyEvent.KEYCODE_BACK) {  
            if (webView.canGoBack()) {  
                // 返回上一页面  
                webView.goBack();  
                return true;  
            } else {  
                // 退出程序  
                finish();  
            }  
        }  
        return super.onKeyDown(keyCode, event);  
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值