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

Android WebView 详细介绍

2011-12-07 16:49 316 查看

Android WebView
详细介绍

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。

相关:

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);3、设置WebView基本信息:
如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);触摸焦点起作用
requestFocus();取消滚动条
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);4、设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");本地文件用:webView.loadUrl("file:///android_asset/XX.html");本地文件存放在:assets文件中

5、如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
给WebView添加一个事件监听对象(WebViewClient) ,并重写其中的一些方法
shouldOverrideUrlLoading:对网页中超链接按钮的响应。
当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest

6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。
覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。

public boolean onKeyDown(int keyCoder,KeyEvent event){

if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){

webview.goBack();//goBack()表示返回webView的上一页面

return true;

}return false;

-------------------------------------------------------------------------------------

Android的webview加载本地html、本apk内html和远程URL

//打开本包内asset目录下的index.html文件

wView.loadUrl(" file:///android_asset/index.html ");//打开本地sd卡内的index.html文件

wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");//打开指定URL的html文件

wView.loadUrl(" http://m.oschina.net");-------------------------------------------------------------------------------------

来个例子:

实现WebView有以下两种不同的方法:

第一种方法的步骤:

1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);2.调用WebView的loadUrl()方法,设置WevView要显示的网页:

互联网用:webView.loadUrl("http://www.google.com");本地文件用:webView.loadUrl("file:///android_asset/XX.html");本地文件存放在:assets 文件中

3.调用Activity的setContentView( )方法来显示网页视图

4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。

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

下面是具体例子:

MainActivity.java

01
package
com.android.webview.activity;
02
03
import
android.app.Activity;
04
import
android.os.Bundle;
05
import
android.view.KeyEvent;
06
import
android.webkit.WebView;
07
08
public
class
MainActivity
extends

Activity {
09
private

WebView webview;
10
@Override
11
public

void
onCreate(Bundle savedInstanceState) {
12
super
.onCreate(savedInstanceState);
13
//实例化WebView对象
14
webview =
new
WebView(
this
);
15
//设置WebView属性,能够执行Javascript脚本
16
webview.getSettings().setJavaScriptEnabled(
true
);
17
//加载需要显示的网页
18
webview.loadUrl(
"http://www.51cto.com/"
);
19
//设置Web视图
20
setContentView(webview);
21
}

22
 
23
@Override
24
//设置回退
25
//覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
26
public

boolean
onKeyDown(
int

keyCode, KeyEvent event) {
27
if

((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
28
webview.goBack();
//goBack()表示返回WebView的上一页面
29
return

true
;
30
}
31
return

false
;
32
}
在AndroidManifest.xml文件中的17行添加权限

01
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
02
<
manifest

xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
  
package
=
"com.android.webview.activity"
04
  
android:versionCode
=
"1"
05
  
android:versionName
=
"1.0"
>
06
<
uses-sdk

android:minSdkVersion
=
"10"

/>
07
08
<
application

android:icon
=
"@drawable/icon"

android:label
=
"@string/app_name"
>
09
<
activity

android:name
=
".MainActivity"
10
  
android:label
=
"@string/app_name"
>
11
<
intent-filter
>
12
<
action

android:name
=
"android.intent.action.MAIN"

/>
13
<
category

android:name
=
"android.intent.category.LAUNCHER"

/>
14
</
intent-filter
>
15
</
activity
>
16
</
application
>
17
<
uses-permission

android:name
=
"android.permission.INTERNET"
/>
18
</
manifest
>
效果图:





第二种方法的步骤:

1、在布局文件中声明WebView

2、在Activity中实例化WebView

3、调用WebView的loadUrl( )方法,设置WevView要显示的网页

4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图

5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。

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

下面是具体的例子:

MainActivity.java

01
package
com.android.webview.activity;
02
03
import
android.app.Activity;
04
import
android.os.Bundle;
05
import
android.view.KeyEvent;
06
import
android.webkit.WebView;
07
import

android.webkit.WebViewClient;
08
09
public
class
MainActivity
extends

Activity {
10
private

WebView webview;
11
@Override
12
public

void
onCreate(Bundle savedInstanceState) {
13
super
.onCreate(savedInstanceState);
14
setContentView(R.layout.main);
15
webview = (WebView) findViewById(R.id.webview);
16
//设置WebView属性,能够执行Javascript脚本
17
webview.getSettings().setJavaScriptEnabled(
true
);
18
//加载需要显示的网页
19
webview.loadUrl(
"http://www.51cto.com/"
);
20
//设置Web视图
21
webview.setWebViewClient(
new

HelloWebViewClient ());
22
}

23
 
24
@Override
25
//设置回退
26
//覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
27
public

boolean
onKeyDown(
int

keyCode, KeyEvent event) {
28
if

((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
29
webview.goBack();
//goBack()表示返回WebView的上一页面
30
return

true
;
31
}
32
return

false
;
33
}

34
 
35
//Web视图
36
private

class
HelloWebViewClient
extends
WebViewClient {
37
@Override
38
public

boolean
shouldOverrideUrlLoading(WebView view, String url) {
39
view.loadUrl(url);
40
return

true
;
41
}
42
}

43
}
main.xml

01
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
02
<
LinearLayout

xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
android:orientation
=
"vertical"
04
android:layout_width
=
"fill_parent"
05
android:layout_height
=
"fill_parent"
06
>

07
<
WebView
08
android:id
=
"@+id/webview"
09
android:layout_width
=
"fill_parent"
10
android:layout_height
=
"fill_parent"
11
/>
12
</
LinearLayout
>
在AndroidManifest.xml文件中的17行添加权限

01
<?
xml

version
=
"1.0"

encoding
=
"utf-8"
?>
02
<
manifest

xmlns:android
=
"http://schemas.android.com/apk/res/android"
03
  
package
=
"com.android.webview.activity"
04
  
android:versionCode
=
"1"
05
  
android:versionName
=
"1.0"
>
06
<
uses-sdk

android:minSdkVersion
=
"10"

/>
07
08
<
application

android:icon
=
"@drawable/icon"

android:label
=
"@string/app_name"
>
09
<
activity

android:name
=
".MainActivity"
10
  
android:label
=
"@string/app_name"
>
11
<
intent-filter
>
12
<
action

android:name
=
"android.intent.action.MAIN"

/>
13
<
category

android:name
=
"android.intent.category.LAUNCHER"

/>
14
</
intent-filter
>
15
</
activity
>
16
</
application
>
17
<
uses-permission

android:name
=
"android.permission.INTERNET"
/>
18
</
manifest
>
效果图:





更多可以参考:http://www.oschina.net/android/43/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: