介绍:

         Android提供了一个内置浏览器,该浏览器可以查看网站,查看邮件,播放视频。要使用该内置浏览器,要通过WebView组件实现,WebView组件是专门来浏览网页的。

     

(一)将WebView加入你的应用

要在你的应用中加入WebView,只需要在你的活动布局中加入<WebView>元素即可

<WebView>
                 android:id = "@+id/WebView"
                 android:layout_width = "match_parent"
                 android:layout_height = "match_parent"
       </WebView>


(二)使用WebView加载页面


(三)获取网络访问权限

在它有效工作之前,你要保证你的应用能访问网络。要访问网络,需要在你的配置文件中获取INTERNET权限。

<manifest...>
         <uses-permission android:name = "android.permission.INTERNET"/>
         ...
         </manifest>

(四)处理页面导航

当用户点击一个WebView中的页面的链接时,通常,是由默认的系统浏览器或者第三方打开并加载目标URL的,然而,你可以在WebView中覆盖这一行为,那么链接就会在WebView中打开。

webView.setWebViewClient(new WebViewClient(){
          //返回值是true的时候控制网页在WebView中去打开,
          //如果是false调用系统浏览器或第三方浏览器
         view.loadUrl(url);
         return true;
    });
         //WebViewClient帮助WebView去处理一些页面控制和请求通知

(五)在WebView中使用Javascript

如果你想要你加载在WebView中的web页面使用Javascript,你需要在WebView中启动Javascript。启动Javascript你可以通过WebView中带有的WebSettings来启动它。你可以通过getSettings()来获取WebSettings的值,然后通过setJavaScriptEnable() 来启用Javascript。

WebView webView = (WebView)findViewById(R.id.webView);
         WebSettings webSettings = webView.getSettings();
         webSettings.setJavaScriptEnabled(true);

(六)后退与前进

当你的WebView覆盖了URL加载,它会自动生成历史访问记录。你可以通过goBack()或goForward()向前或向后访问已访问过的站点。

         改写物理按键-----返回的逻辑:onKeyDown  

@Override
      public boolean onKeyDown(int keyCode,KeyEvent event){
      if(keyCode == KeyEvent.KEYCODE_BACK)
      {
           if(webView.canGoBack())
          {
                   webView.goBack();//返回上一页面
                   return true;
          }else
          {
                   System.exit(0);//退出程序
          }
          return super.onKeyDown(keyCode,event);
      }

(七)判断页面加载过程

由于有些网页可能加载缓慢,所以我们需要去判断页面的加载过程,制作进度条给予用户良好的体验效果

webView.setWebChromeClient(new WebChromeClient)(){
          @Override
          public void onProgressChanged(WebView view,int newProgress){
          //newProgress  1-100之间的整数
          if(newProgress == 100){
          //网页加载完毕,关闭ProgressDialog
                    closeDialog();
          }else
          {
          //网页正在加载,打开ProgressDialog
                    openDialog(newProgress);
          }
       }
          private void closeDialog(){
                 if(dialog != null && dialog.isShowing())
                 {
                        dialog.dismiss();
                        dialog = null;
                 }
          }
          private void openDialog(int newProgress){
                if(dialog == null)
                {
                        dialog = new ProgressDialog(MainActivity.this);
                        dialog.setTitle("正在加载");
                        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        dialog.setProgress(newProgress);
                        dialog.show();
                }
                else
                {
                        dialog.setProgress(newProgress);
                }
          }
       });

(八)WebView缓存的运用
 WebSettings settings = webView.getSettings();
           优先使用缓存: webView.getSettings().setCacheMode
                                           (WebSettings.LOAD_CACHE_ELSE_NETWORK);
           不使用缓存:webView.getSettings().setCacheMode
                                           (WebSetting.LOAD_NO_CACHE);

WebSettings的常用方法


方法

描述

setJavaScriptEnabled(boolean flag)

设置是否支持Javascript

setBlockNetworkImage(boolean flag)

设置是否阻止网络图片加载

setBuiltInZoomControls(boolean enabled)

将HTML文本内容加载到WebView中

setCacheMode(int mode)

设置缓存模式

setDefaultFontSize(int size)

设置默认字体大小

setFixedFontFamily(String font)

设置固定使用的字体

setDefaultTextEncodingName(String encoding)

设置解码时默认的字符集

setSupportZoom(boolean support)

设置是否支持变焦

setAllowFileAccess(boolean allow)

设置是否允许访问WebView中文件。就是file:///android_asset和file:///android_res路径下的资产和资源文件。默认允许访问。



WebChromeClient常用方法


方法

描述

onJsAlert()

处理Javascript中Alert对话框

onJsConfirm()

处理Javascript中Confirm对话框

onJsPrompt()

处理Javascript中Prompt对话框

onProgressChanged()

加载进度条改变

onCloseWindow()

关闭WebView

onCreateWindow()

创建WebView

onReceivedIcon()

Icon图标改变

onReceivedTitle()

网页Title改变


WebViewClient常用方法

方法

描述

shouldOverrideUrlLoading()

新的链接在当前WebView中打开

onPageStarted()

网页开始加载

onPageFinished()

网页加载完毕

doUpdateVisitedHistory()

更新访问历史记录的数据库

onLoadResource()

加载指定Url地址提供的资源

onFormResubmission()

应用程序重新请求网页数据

onScaleChanged()

WebView发生改变