Android笔记(一):使用WebView

很多时候,我们需要在app中打开网页,或者直接将某个网页封装成app,其实实现起来很容易,我们只需要使用WebView就可以做到了。

完整项目地址:https://github.com/KMKNKK/WebView_text
项目DSDN下载地址:http://download.csdn.net/download/qq_36113598/10011066

首先,声明在xml文件里部署webview,然后在java文件里声明webview;

接着,初始化websetting,使webview满足某些需求,以打开各种网页:

  private void initView() {
        WebSettings setting = mWebView.getSettings();
        setting.setJavaScriptEnabled(true);//支持Js
        setting.setCacheMode(WebSettings.LOAD_DEFAULT);//缓存模式
        setting.setBuiltInZoomControls(true);
        //是否支持画面缩放,默认不支持
        setting.setSupportZoom(true);
        //是否显示缩放图标,默认显示
        setting.setDisplayZoomControls(false);
        //设置网页内容自适应屏幕大小                    
  setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        setting.setUseWideViewPort(true);
        setting.setLoadWithOverviewMode(true);
        setting.setJavaScriptCanOpenWindowsAutomatically(true);
        //设置js可以直接打开窗口,如window.open(),默认为false
        setting.setSupportZoom(true); 
        //是否可以缩放,默认true
        setting.setBuiltInZoomControls(true); 
        //是否显示缩放按钮,默认false
        setting.setUseWideViewPort(true); 
        //设置此属性,可任意比例缩放。大视图模式
        setting.setLoadWithOverviewMode(true); 
        //和setUseWideViewPort(true)一起解决网页自适应问题
        setting.setAppCacheEnabled(true); 
        //是否使用缓存
        setting.setDomStorageEnabled(true); 
        //DOM Storage
        //displayWebview.getSettings().setUserAgentString("User-Agent:Android"); 
        //设置用户代理,一般不用
    }

这里我将初始化封装成一个函数,在webview声明语句后面调用就好了。

接着,设置网页加载规则:

mWebView.setWebViewClient(new WebViewClient() {
          @Override
          public boolean shouldOverrideUrlLoading(WebView view, String url) 
          {
                if(url == null) return false;
                try {
                   if (url.startsWith("http:") || url.startsWith("https:"))
                    {
                        view.loadUrl(url);
                        return true;
                    }
                    else
                    {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                } catch (Exception e) { 
      //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
                    return false;
                }
            }
        });

由于webview只能识别http、https开头的网页,所以如果打开不是这两个开头的网址会出现:加载网页出现(“找不到网页net:err_unknown_url_scheme”)的错误,所以要在shouldOverrideUrlLoading里写入不是http、https开头的网址的解决办法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值