WebView在是一个特殊的View, 它能用来显示网页,这个类可以被用来在app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(Android 4.4系统支持,4.4一下可以采用http://developer.android.com/guide/webapps/debugging.html)调试HTML,CSS,JavaScript等等功能。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。
把WebView视为一个浏览器,它使用了Webkit渲染引擎加载显示网页,WebView有两种实现方法:
第一种,实例化代码:
在要Activity中实例化WebView组件:
WebView webView = new WebView(this);
调用WebView中的loadUrl()方法,设置WebView要显示的网页:
- 网络请求:webView.loadUrl(“http://blog.csdn.net/ideal_utopia“);
- 本地资源加载:webView.loadUrl(“file://android_asset/xx.html”);
调用Activity的setContentView()方法显示网页视图
- 使WebView多次打开请求界面时,具有back功能,需覆盖Activity的onKeyDown方法,如果不做任何处理,那么一使用手机back功能,那么浏览器则会调用finish,从而结束自身,并不会进行界面的回退!
- 需要在配置文件添加网络请求权限,否则会“Web page not available”
eg:
public calss MainActivity extends Activity
{
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//实例化WebView对象
webView = new WebView(this);
//设置WebView属性,能够执行JavaScript脚本
webView.getSettings.setJavaScriptEnaled(true);
//加载需要显示的网页
webView.loadUrl("http://blog.csdn.net/ideal_utopia");
//设置Web视图
setContentView(webView);
}
//设置回退
//覆盖Activity的onKeyDown(int keyCode,KeyEvent event)方法
@Override
public boolean onKeyDown(int keyCode,KeyEvent event)
{
if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())
{
webView.goBack();//goBack()表示返回WebView的上一个界面
return true;
}
return false;
}
}
第二种、在布局文件中配置:
- 在布局文件中声明WebView
- 在Activity中实例化WebView
- 调用WebView的loadUrl()方法,设置WebView要显示的网页
- 使WebView能够响应超链接功能,调用setWebViewClient()方法,设置WebView视图
- 覆盖Activity的onKeyDown方法
- 设置网络请求权限
eg:
public calss MainActivity 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.setJavaScriptEnaled(true);
//加载需要显示的网页
webView.loadUrl("http://blog.csdn.net/ideal_utopia");
//设置Web视图
webView.setContentView(new WebViewClient());
}
//设置回退
//覆盖Activity的onKeyDown(int keyCode,KeyEvent event)方法
@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 classHelloWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}
}