WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。
它的实现方式有如下两种:
1.第一种实现步骤
1、在布局文件中声明WebView(activity_main.xml)
2、在Activity中实例化WebView(MainActivity)
private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取控件对象 webView = (WebView) findViewById(R.id.webView1); }
// 设置显示的网页 webView.loadUrl("http://www.baidu.com");备注1:如果访问的页面中有Javascript,则webview必须设置支持Javascript,否则页面也是空白
// 获取WebView属性 WebSettings websettings = webView.getSettings(); // 设置支持javascript代码 websettings.setJavaScriptEnabled(true);
备注2:如果需要访问网络需要添加网络访问的权限,否则会出现Web page not available错误
4、为了让WebView能够在当前组件中响应超链接功能,而非新打开android系统中的浏览器响应该链接,必须调用setWebViewClient( )方法,设置 WebView视图
// 设置视图 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // 打开地址 view.loadUrl(url); // 返回的是true,代表在webView控件中打开,否则在系统的浏览器中打开 return true; } });5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退键,会调用finish()而结束自身,而不是回退到上一页面
// 后退的操作实现 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { Toast.makeText(this, "hohouhouhou", 1).show(); webView.goBack(); return true; } else { return super.onKeyDown(keyCode, event); } }
// 后退操作 android2.0 @Override public void onBackPressed() { Toast.makeText(this, "后退键", 1).show(); // 判断是否能够回退 if (webView.canGoBack()) { webView.goBack();// 返回 } else { super.onBackPressed(); } }
2.第二种实现步骤
把第一种实现步骤的1,2两个步骤改成:如下操作
public class MainActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 创建控件对象 webView = new WebView(this); // 设置显示的视图为创建的控件即可 setContentView(webView); }
备注:关于WebSettings与WebViewClient常用方法的说明
WebSettings常用方法:
setAllowFileAccess 启用或禁止WebView访问文件数据 setBlockNetworkImage 是否显示网络图像 setBuiltInZoomControls 设置是否支持缩放 setCacheMode 设置缓冲的模式 setDefaultFontSize 设置默认的字体大小 setDefaultTextEncodingName 设置在解码时使用的默认编码 setFixedFontFamily 设置固定使用的字体 setJavaSciptEnabled 设置是否支持Javascript setLayoutAlgorithm 设置布局方式 setLightTouchEnabled 设置用鼠标激活被选项 setSupportZoom 设置是否支持变焦
doUpdateVisitedHistory 更新历史记录 onFormResubmission 应用程序重新请求网页数据 onLoadResource 加载指定地址提供的资源 onPageFinished 网页加载完毕 onPageStarted 网页开始加载 onReceivedError 报告错误信息 onScaleChanged WebView发生改变 shouldOverrideUrlLoading 控制新的连接在当前WebView中打开还是在系统浏览器中打开