您的位置:首页 > 移动开发 > Android开发

Android SDK Tutorials系列 - Hello Views - Web View

2011-11-27 12:05 309 查看


Web View

WebView允许你创建自己的窗口来浏览网页(甚至是开发一个完整的浏览器)。本教程里,你将创建一个简单的Activity,能够浏览和导航网页。

创建一个项目:HelloWebView.

修改
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"
/>


打开
HelloWebView.java
,在类的顶部声明一个
WebView
对象:
WebView mWebView;


修改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");
}


通过Activity界面里的WebView元素来初始化成员WebView;调用getSettings()方法获得WebSettings对象,然后调用其
setJavaScriptEnabled(boolean)
方法设置WebView支持JavaScript。最后,调用loadUrl(String)方法加载一个初始网页。

因为这个应用要访问互联网,需要在Android manifest文件里设置相应的权限。打开
AndroidManifest.xml
文件,将下面的内容添加为节点<manifest>的元素:
<uses-permission android:name="android.permission.INTERNET" />


同时在manifest文件里,给Activity设置"NoTitleBar"主题去除标题栏,为网页显示留出更大空间:
<activity android:name=".HelloGoogleMaps" android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">


运行应用。

你现在拥有一个最简单的页面浏览器,其实它还称不上一个真正的浏览器,一旦你点击一个链接,默认的Android浏览器会处理这个Intent并打开新的页面,因为这个Activity技术上还没有处理打开新链接的请求。除了添加一个intent
filter来打开网页,你可以重写WebViewClient类来让Activity处理它自己的URL请求。

在类HelloWebView里面内嵌一个类:
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}


在onCreate(Bundle)方法末尾,设置上面自定义的类
HelloWebViewClient
的实例作为WebViewClient:
mWebView.setWebViewClient(new HelloWebViewClient());


这行代码让在初始WebView对象里面打开任何网页。

这行代码创建一个WebViewClient,让WebView对象自己加载自身被点击的URL。

重新运行应用,新页面也在当前Activity被加载。但是你不能返回先前打开的页面。为了实现这个功能,需要处理设备上的BACK按钮来回到前面的页面,而不是退出应用。

为了处理BACK按钮点击事件,在类HelloWebView里面添加下面的方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}


在当前Activity里面,无论何时按下一个按钮,都会调用
onKeyDown(int, KeyEvent)
回调函数。条件语句使用KeyEvent来检查按下的是否是BACK按钮,并检查WebView是否真的能够返回上一个页面(是否有浏览历史)。如果两个条件都满足,就调用goBack()方法来返回WebView历史的上一步。返回true表示这个事件已经被处理过了。如果条件不满足,事件会被发送回系统。

重新运行应用。现在就能够在当前Activity打开新的连接,并能导航返回前面浏览的页面。

当打开应用,应该能看到如下画面:



返回 Android
SDK Tutorials系列 - Hello Views

转载请注明出处: /article/11130792.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: