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、再次运行应用程序,你现在可以打开连接和返回到浏览的历史页面。
当你打开出程序, 你将看到这个:
- Android开发者指南——WebView
- Android开发者指南(9) —— ProGuard
- Android开发者指南—— AIDL
- Android开发者指南(9) —— ProGuard
- Android开发者指南(6) —— AIDL
- Android开发者指南—— AIDL
- Android开发者指南(9) —— ProGuard
- Android开发者指南(6) —— AIDL
- Android开发者指南(9) —— ProGuard
- Android开发者指南(9) —— ProGuard
- Android开发者指南(6) —— AIDL
- Android开发者指南(1) —— Android Debug Bridge(adb)
- Android开发者指南(1) —— Android Debug Bridge(adb)
- Android开发者指南(1) —— Android Debug Bridge(adb)
- Android开发者指南(10) —— Android API Levels
- Android开发者指南(10) —— Android API Levels
- Android 4.0 开发者指南—— Resource Types - More Types
- Android 4.0 开发者指南(27) —— Resource Types - String
- apache2.2 安装后默认自动停止
- 成功破解XCode
- memcache 使用参考
- 日期
- ZOJ 1411 Anniversary (回溯)
- Android开发者指南——WebView
- VC++6.0 下搭建 wxWidgets 开发环境
- SpringMVC 3
- HDU 1798 Tell me the area
- Hadoop概要-MapReduce的认识
- 厚黑学(转)
- 创建静态控件——静态控件是用来显示的。只要需要根据size移动其大小就好了,内部显示不用处理
- ubutu11.04下安装oracle10 express安装成功后的后事
- 使用Code blocks 编译QT程序之二