Web View允许你创建自己的窗口用于浏览网页,甚至是开发一个自己的浏览器.以下是一个简单的例子:
1.创建一个名为HelloWebView工程.
2.打开res/layout/main.xml,插入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
3.打开 HelloWebView.java
文件,在这个类的开始定义WebView 对象:
WebView mWebView;
4.在onCreate方法里面使用以下代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(http://www.google.com);
}
以上代码初始化了WebView对象,通过getSettings方法得到了一个WebSettings 对象,通过setJavaScriptEnabled方法使WebView支持Java script,最后通过loadUrl方法来导入网页.
5.由于应用程序需要访问网页,因此需要在 Android manifest 文件里面添加合适的权限:
<uses-permission android:name="android.permission.INTERNET" />
6.同时也可以在manifest 文件里面去掉title bar,给webview更大的可视空间
<activity android:name=".HelloGoogleMaps" android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
7.现在运行应用程序,我们创建了一个简单的网页观察器,但目前还不是一个浏览器,因为当你点击一个链接时,Android 默认的浏览器会处理浏览web页面的intent,为了让我们的activity能够处理自己的url请求,我们可以重写WebViewClient 类.
8.在HelloAndroid Activity中,创建一个内部类:
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
9.在onCreate方法的末尾,设置HelloWebViewClient 的实例,作为一个WebViewClient :
mWebView.setWebViewClient(new HelloWebViewClient());
这样我们就创建了一个webview,这个webview可以处理任何通过这个webview选择的URL,并且加载到这个webview中,shouldOverrideUrlLoading方法传递当前的WebView 和URL请求.
如果再次运行应用程序,新的页面将会被加载进来,这样会有一个缺点:无法回到之前的页面上去,解决这个问题的办法是处理BACK键,让webview能够返回到之前的页面而不是退出程序.
10.为了处理BACK键,我们可以重写onKeyDown方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
当canGoBack方法返回true时,表明之前还有页面被加载过,可以返回到前一加载页面,如果为false,则退出程序.