前言本文翻译自官方教程。(
源码下载)
android提供的web view可以让我们不用默认浏览器打开网页,本文将利用web view,在应用中实现网页的访问。
1.新建工程HelloWebView
2.打开res/layout/main.xml,添加一个webview,如下修改
<?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.打开HelloWebViewActivity.java
文件,声明一个成员,并且重写onCreate()方法:WebView mWebView;
@Override
publicvoid onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(
true);
mWebView.loadUrl("http://www.cnblogs.com");
mWebView.setWebViewClient(
new HelloWebViewClient());
}
4.在清单文件中,设置网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>5.找到我们的Activity,设置无标题模式android:theme="@android:style/Theme.NoTitleBar"。
<activity
android:name=".HelloWebViewActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity>6.在
Android中打开网页时会自动调用系统的浏览器,而这是我们不希望出现的。那么我们就要自定义一个浏览网页的内类,这个类东西比较少,我们定义为内部类,它扩展WebViewClient接口:
privateclass HelloWebViewClient
extends WebViewClient
{
@Override
publicboolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
returntrue;
}
}
7.现在回到HelloWebViewActivity的oncreate()方法里面,在末尾添加:
mWebView.setWebViewClient(
new HelloWebViewClient());
8.到这已经实现在应用的内部浏览网页,但是我们还缺少返回的功能,如果我们近入一个子网页后,又想返回上一页怎么办,这时需要重写按钮返回事件。
@Override
publicboolean onKeyDown(
int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
{
mWebView.goBack();
returntrue;
}
returnsuper.onKeyDown(keyCode, event);
}
9.全部OK,可以运行了。总体而言要实现本文的功能是比较简单的,但是 ,我们这样做的效率不是很高,如果对访问的缓存功能进行优化,就可以做成一个自己的手机浏览器了。(
源码下载)

作者:
小文字出处:
http://www.cnblogs.com/avenwu/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
-