Android开发者指南——WebView

来源:互联网 发布:厦门密室逃脱知乎 编辑:程序博客网 时间:2024/05/10 06:16


声明

  欢迎转载,但请保留本文作译者和出处

        水平有限,翻译不当之处欢迎雅正

 

序言: 本文位于Rsources/Tutorials/Hello Views/Web View

Web View

原文:http://developer.android.com/resources/tutorials/views/hello-webview.html

本文:http://blog.csdn.net/lonkiss/article/details/6645615

翻译:lonkiss & ❤Coco·Chanel❤

 

Web View

WebView 允许你创建一个自己的查看网页的视窗(甚至是开发一个完整的浏览器). 在此指南中, 你将建立一个可以浏览和导航网页的简单的Activity。


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;


  然后,为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控件初始化Weview成员。用getSettings() 获得一个WebSettings 对象;并且使用setJavaScriptEnableed(boolean)为WebView启用javascript支持。 最后使用loadUrl(String)载入初始网页。
 

 4、因为这个应用程序要访问因特网,你需要在Android manifest 文件中加入许可权限。打开 AndroidManifest.xml 文件,加入以下代码作为<manifest>元素的子元素

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


5、在manifest中使用"NoTitleBar" 主题 可以通过移除标题栏为浏览网页得到更多空间:

<activity android:name=".HelloGoogleMaps" android:label="@string/app_name"          android:theme="@android:style/Theme.NoTitleBar">


6、 现在启动应用程序
     
      你现在有了一个简单的网页查看器,但它还不是一个真正的浏览器,因为当你点击一个链接的时候,android系统默认的浏览器会处理查看网页的意图,因为这个Activity还未在技术上提供支持去处理。
你可以重写WebViewClient类,并让这个Activity能处理它自己的URL请求,而不是添加一个Intent Filter去查看网页。

 

7、在HelloAndroid Activity中,加入这个内部类:

private class HelloWebViewClient extends WebViewClient {    @Override    public boolean shouldOverrideUrlLoading(WebView view, String url) {        view.loadUrl(url);        return true;    }}


8、然后前往onCreate(Bundle)方法的末尾,构建一个HelloWebViewClient实例作为WebViewClient

mWebView.setWebViewClient(new HelloWebViewClient());


这一行可以放在WebView对象初始化后的任何地方
   这创建了一个可以加载任何一个在当前webView中选择的URL到当前webview的 WebViewClient。当前WebView和 请求的URL都传给了shouldOverrideUrlLoading(WebView, String)方法,它要做的就是在给定的视图中加载URL。返回true表示此方法已经处理了这个URL,事件不创建(否则 一个被系统默认浏览器应用程序处理的Intent会被创建)

 如果你再次运行这个应用程序,新的页面将在这个Activity中加载。但是,你无法返回到先前的页面。为此,你需要处理设备上的BACK键,以致它能返回到之前的页面,而不是退出应用程序

 

 9、处理BACK按钮被按事件,在HelloWebView Activity中加入以下代码

@Overridepublic 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表明事件已经被处理完成,如果条件不成立,事件将被发回给系统。

 

10、再次运行应用程序,你现在可以打开连接和返回到浏览的历史页面。

当你打开出程序, 你将看到这个: