Android:一个最简单的WebView教程
Android:一个最简单的WebView教程
WebView允许你创建自己的窗口来显示网页(乃至开发一个完整的浏览器)。在这个教程中,你可以创建一个简单的Acitivity来显示和导航网页。
1、创建一个新的项目命名为HelloWebView。
2、打开 res/layout/main.xml文件并加入下面的内容:
[html]- <?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"
- />
HelloWebViewActivity.java)。在类的顶部,声明一个WebView对象:
[java]
- WebView mWebView;
- 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;用getSettings()请求一个WebSettings对象;并用setJavaScriptEnabled(boolean)将WebView的JavaScript置成可用。最后,用loadUrl(String)加载一个初始化好的网页。
由于本程序需要接入网络,你要在Android manifest文件中加一个适当的权限。打开AndroidManifest.xml文件并加上如下子元素:
- <uses-permission android:name="android.permission.INTERNET" />
- <activity android:name=".HelloGoogleMaps" android:label="@string/app_name"
- android:theme="@android:style/Theme.NoTitleBar">
你现在已经有了最简单的网页显示工具了。它现在还不是一个浏览器呢,因为如果你点击一个链接,默认的Android浏览器处理了这个Intent来显示一个网页,原来这个Activity在技术上是不能够做这些的。不用intent过滤器来显示网页,你可以重写一个WebViewClient类来启用Activity处理自己的URL请求。
在HelloAndroid Activity中,加入内部类:
- private class HelloWebViewClient extends WebViewClient {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- view.loadUrl(url);
- return true;
- }
- }
- mWebView.setWebViewClient(new HelloWebViewClient());
创建了WebViewClient就可以选择WebView上任意URL并在同一个WebView中加载。shouldOverrideUrlLoading(WebView, String)方法传入当前的WebView和请求的URL,它所做的事情就是在给定的view中加载URL。返回true说明这个方法已经处理了URL,这个事件就不用再传递了(这时,会创建一个Intent并由浏览器程序处理)。
如果你再次运行这个程序,这个Activity会加载一个新的页。然而你还是不能导航到前一个页面。要如此做,你只需处理设备的BACK键,以使它返回到前一个页,而不是退出程序。 [java]
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
- mWebView.goBack();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
当你打开程序,你将会看到如下的界面:
评论暂时关闭