首页 > 代码库 > Android WebView简介

Android WebView简介

  Android的网络功能特别强大,WebView(网络视图)组件支持加载网页,可以理解为使用Webkit内核的浏览器,而它的实现方式有两种;

 

第一种具体实现步骤如下:

(1)在布局文件中先生命WebView;

(2)在Activity中实例化WebView;

(3)调用WebView的loadUrl()方法,加载指定的URL地址网页;

(4)为了让WebView能够响应超链接功能,调用setWebViewClient()方法,设置WebView客户端;

(5)为了让WebView支持回退功能,覆盖onKeyDown()方法,如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面;

(6)在AndroidManifest.xml文件中添加访问互联网的权限,否则不能显示

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

 

例如:

 

MainActivity.java

package com.xiaozhang.dialog;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebView;import android.webkit.WebViewClient;public class MainActivity extends Activity {    private WebView webview;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webview = (WebView) findViewById(R.id.webview);        // 设置WebView属性,能够执行JavaScript脚本        webview.getSettings().setJavaScriptEnabled(true);        // 加载URL内容        webview.loadUrl("http://www.baidu.com");        // 设置web视图客户端        webview.setWebViewClient(new MyWebViewClient());    }    // 设置回退    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {            webview.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }    // web视图客户端    public class MyWebViewClient extends WebViewClient {        public boolean shouldOverviewUrlLoading(WebView view, String url) {            view.loadUrl(url);            return true;        }    }}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <WebView        android:id="@+id/webview"        android:layout_width="fill_parent"        android:layout_height="fill_parent" /></LinearLayout>

 

记得不要忘了在AndroidManifest.xml中添加:

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

 

 

第二种实现方式:

(1)在Activity中实例化WebView组件;

(2)调用WebView的loadUrl()方法,设置WevView要显示的网页:
    互联网用:webView.loadUrl("http://www.baidu.com"); 
    本地文件用:webView.loadUrl("file:///android_asset/XX.html");

    本地文件一般存放在assets 文件中;

(3)调用Activity的setContentView)方法来显示网页视图;

(4)为了让WebView支持回退功能,覆盖onKeyDown()方法,如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面;

(5)在AndroidManifest.xml文件中添加访问互联网的权限,否则不能显示

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

 

PS:此种方式有些问题,没第一种方式好;

 

实现效果:

 

MainActivity.java

 

package com.xiaozhang.dialog;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebView;public class MainActivity extends Activity {    private WebView webview;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 实例化WebView对象        webview = new WebView(this);        // 设置WebView属性,能够执行Javascript脚本        webview.getSettings().setJavaScriptEnabled(true);        // 加载需要显示的网页        webview.loadUrl("http://www.sina.com.cn/");        // 设置Web视图        setContentView(webview);    }    @Override    // 覆盖onKeyDown方法,设置回退    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {            // goBack()表示返回WebView的上一页面            webview.goBack();            return true;        }        return false;    }}

 

Android WebView简介