len:7901
len:15
len:6
zz22zz技术论坛
首页| 论坛| 消息
主题:WebView 浏览器
太史慈发表于 2013-08-22 09:34
一 概述WebView是一个显示网页的视图。它依据于你自己的网页浏览器或者只是显示在你的Activity中的内容。它使用了WebKit渲染引擎显示网页。它包括一些方法:通过浏览记录向前和向后浏览,放大,缩小,进行文本搜索等等。实现内置的放大缩小使用 WebSettings.setBuiltInZoomControls(boolean)。注意:为了使您的Activity能够上网,在WebView加载网页,你必须添加 INTERNET permissions 到你的 Android Manifest文件中去。

二 操作步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this); 你也可以在布局文件中声明WebView,在Activity中实例化WebView。
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl(http://www.baidu.com);
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图

三 注意事项在开发过程中应该注意几点:

1.AndroidManifest.xml中必须添加权限"android.permission.INTERNET"。
[/code]
[backcolor=#ffffff][color=#444444]2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。[/color][/backcolor][backcolor=#ffffff][color=#444444][/color][/backcolor][code]webview.getSettings().setJavaScriptEnabled(true);
3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。webview.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack(); //goBack()表示返回WebView的上一页面
return true;
}
return false;
}
具体实现代码:
package xiaosi.webview;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebViewActivity extends Activity {
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
//设置WebView属性,能够执行Javascript脚本
webview.getSettings().setJavaScriptEnabled(true);
//加载需要显示的网页
webview.loadUrl("http://www.baidu.com/");
//设置Web视图
webview.setWebViewClient(new HelloWebViewClient ());
}

@Override
//设置回退
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack(); //goBack()表示返回WebView的上一页面
return true;
}
return false;
}

//Web视图
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}main.xml
下一页 (1/2)
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖