WebView使用汇总

一、WebView加载界面的三种方式:

1、loadDataWithBaseURL(String baseUrl, String data,String mimeType, String encoding, String historyUrl);

      baseUrl  指定了你的data参数中数据是以什么地址为基准的,因为data中的数据可能会有超链接或者是image元素,而很多网站的地址都是用的相对路径,如果没有baseUrl,webview将访问不到这些资源。
      比如: 标签的指定的Url是相对路径,如果没有baseUrl就访问不了。

      data  HTML文本;

      mimeType  资源类型,默认"text/html"  ;

      encoding    资源的编码;

      historyUrl   历史Url

2、loadData(String data, String mimeType, String encoding);

      loadData()用的比较少,加载HTML文本时一般都是loadDataWithBaseURL;

      loadDataWithBaseURL和loadData两个方法加载的HTML代码片段的不同点在于,loadData()中的html data中不能包含'#', '%', '\', '?'四中特殊字符,在平时测试时,你的数据时,你的数据里含有这些字符,但不会出问题,当出问题时,你可以替换下。

3、loadUrl(String url); 可以是本地的HTML文件,也可以是网页(网络权限)。


二、WebView的一些常用属性:

     1、setJavaScriptEnabled(boolean flag) 是否支持JS,默认false。如果想让java与js相互,或者想让js本身完成一定的功能,将此设置为true;

     2、setBuiltInZoomControls(true)和 setSupportZoom(true),这两个同时设置为true,才能支持缩放,因为设置setSupportZoom的前提是设置setBuiltInZoomControls;

     3、setDisplayZoomControls(false),缩放时看着很烦人的缩放控制器,设置false即可隐藏。通过手势进行缩放。

     4、setDefaultFontSize(18);设置默认的字体大小,默认为16,有效值区间在1-72之间。

     5、setUseWideViewPort(true)和setLoadWithOverviewMode(true)让网页全部显示在手机屏幕上(自适应屏幕)。


三、设置WebView内的链接直接有本WebView打开,否则点击链接后,跳转到手机其他的浏览器。

           m_webNoticeContent.setWebViewClient(new WebViewClient() {
           @Override
           public boolean shouldOverrideUrlLoading(WebView view, String url) {
                  view.loadUrl(url);
                  return true;
                 }
           });


四、当用loadUrl()方法打开网页时,默认是用启动手机浏览器打开,如果要用WebView打开,需要以下设置:

           private WebViewClient webViewClient = new WebViewClient() {
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
                return true;
                 }
           };

           m_webView.setWebViewClient(webViewClient);


五、loadDataWithBaseURL给WebView设置data,如果文本中有图片,需要设置图片的大小自适应屏幕,需要修改HTML文本中的img节点:

           noticeContent.replace("width是屏幕的宽度


六、WebView中返回时,返回到WebView浏览的上一个界面。

         public boolean onKeyDown(int keyCode, KeyEvent event) {       
                  if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
                        mWebView.goBack();       
                        return true;       
                 }       
                 return super.onKeyDown(keyCode, event);       
         }


你可能感兴趣的:(android)