WebView是Android中一个非常实用的组件,它和Safai、Chrome一样都是基于Webkit网页渲染引擎,可以通过加载HTML数据的方式便捷地展现软件的界面。使用WebView开发软件有一下几个优点:
1.可以打开远程URL页面,也可以加载本地HTML数据;
2.可以无缝的在java和javascript之间进行交互操作;
3.高度的定制性,可根据开发者的需要进行多样性定制。
下面就通过例子来介绍一下WebView的使用方法。
我们先建一个webview项目,项目结构如左图:
在这个项目中,我们会先进入MainActivity这个导航界面(上边右图),通过点击不同按钮转向不同的Activity,下面分别简单介绍一下这几个Activity的所要演示的功能:
LoadActivity:主要演示加载网络页面和WebView的一些基本设置;
CaptureActivity:主要演示WebView的截图的功能;
FileActivity:主要演示访问本地文件的功能;
JSActivity:主要演示WebView对JS的支持以及JS和Java之间的互相调用;
接下来,我们会逐一分析各个Activity的相关信息:
LoadActivity:
与之对应的布局文件为load.xml,演示效果如下:
我们在文本框中输入URL,然后点击“load”按钮,然后由WebView加载相应的页面,在加载过程中,根据加载进度更新窗口的进度条。由于布局相对简单,我们主要来看一下LoadActivity.java的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package com.scott.webview; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; public class LoadActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置窗口风格为进度条 getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.load); webView = (WebView) findViewById(R.id.webView); WebSettings settings = webView.getSettings(); settings.setSupportZoom(true); //支持缩放 settings.setBuiltInZoomControls(true); //启用内置缩放装置 settings.setJavaScriptEnabled(true); //启用JS脚本 webView.setWebViewClient(new WebViewClient() { //当点击链接时,希望覆盖而不是打开新窗口 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); //加载新的url return true; //返回true,代表事件已处理,事件流到此终止 } }); //点击后退按钮,让WebView后退一页(也可以覆写Activity的onKeyDown方法) webView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { webView.goBack(); //后退 return true; //已处理 } } return false; } }); webView.setWebChromeClient(new WebChromeClient() { //当WebView进度改变时更新窗口进度 @Override public void onProgressChanged(WebView view, int newProgress) { //Activity的进度范围在0到10000之间,所以这里要乘以100 LoadActivity.this.setProgress(newProgress * 100); }pan>(newProgress * 100); }进行交互操作;
3.高度的定制性,可根据开发者的需要进行多样性定制。 下面就通过例子来介绍一下WebView的使用方法。 我们先建一个webview项目,项目结构如左图: 在这个项目中,我们会先进入MainActivity这个导航界面(上边右图),通过点击不同按钮转向不同的Activity,下面分别简单介绍一下这几个Activity的所要演示的功能: LoadActivity:主要演示加载网络页面和WebView的一些基本设置; CaptureActivity:主要演示WebView的截图的功能; FileActivity:主要演示访问本地文件的功能; JSActivity:主要演示WebView对JS的支持以及JS和Java之间的互相调用; 接下来,我们会逐一分析各个Activity的相关信息: LoadActivity: 与之对应的布局文件为load.xml,演示效果如下: 我们在文本框中输入URL,然后点击“load”按钮,然后由WebView加载相应的页面,在加载过程中,根据加载进度更新窗口的进度条。由于布局相对简单,我们主要来看一下LoadActivity.java的代码:
|