关闭

WebView使用详解

标签: 网络WebViewandroid
149人阅读 评论(0) 收藏 举报
分类:

通过Intent实现网络访问

Android中可以通过Intent实现网络访问,使用改方法,手机将使用手机内默认浏览器进行网页访问,在xml中声明WebView控件,具体代码如下:

Uri uri = Uri.parse(url);
            Intent intentWeb = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intentWeb);
Uri uri = Uri.parse(url);
            Intent intentWeb = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intentWeb);

加载本地网页

可以把自定义网页文件放到工程的assets中,通过WebView显示本地网页,具体代码如下:

webView.loadUrl("file:///android_asset/index.html");

注:index.html为assets文件夹中网页文件名

WebView访问网页

加载网页与设置

通过loadUrl加载网址:

private String url = "http://www.hchstudio.cn";
webView.loadUrl("file:///android_asset/index.html");

使WebView获得焦点:

webView.requestFocus();

WebSettings使用

Android 提供管理WebView的一些setting的类WebSettings,在WebView对象被创建时WebSettings对象也会被同时创建,并附有默认的settings值. WebSettings对象可以通过WebView.getSettings()获得。WebSettings的生命周期同WebView生命周期相同,如果WebView被destroy 则WebSettings应该被释放,否则如果使用WebSettings继续再操作的话, 会抛出异常IllegalStateException。

WebSettings webSettings = webView.getSettings();
//启用javascript
webSettings.setJavaScriptEnabled(true);
//webView有限使用缓存加载
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

setWebViewClient的使用

WebViewClient帮助WebView去处理一些页面控制和请求通知

webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        view.loadUrl(url);
        return true;
//      返回为true时,控制网页在webview中打开,为false时,调用系统浏览器打开
    }
//  网页下载开始
    @Override
    public void onPageStarted(WebView view, String url,
                        Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }
//  网页下载结束
    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
    }
});

setWebChromeClient

WebChromeClient在页面加载中设置处理问题,例如进度条

webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        // TODO Auto-generated method stub
//      newProgress为1-100之间的整数
        if(newProgress==100){
//      网页加载完毕
            if(pd!=null&& pd.isShowing()){
                pd.dismiss();
                pd=null;
            }
        }else{
//          网页正在加载
            showpd(newProgress);
        }
        super.onProgressChanged(view, newProgress);
    }
});
private void showpd(int newProgress) {
    // TODO Auto-generated method stub
    if(pd ==null){
        pd = new ProgressDialog(this);
        pd.setTitle("网页加载");
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setProgress(newProgress);
        pd.show();
    }else{
        pd.setProgress(newProgress);
    }
}

改变返回逻辑

设置WebView返回时为上一个浏览的网页

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
        Toast.makeText(this, webView.getUrl(), Toast.LENGTH_SHORT).show();
        webView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场