android学习之WebView
2013-11-02 00:00
302 查看
WebView是android.webkit包下的一个组件,能用来显示网页。
WebView默认是不带地址栏和加进度条的,单单是一个显示网页内容的面板。
使用WebView非常简单,主要是通过load方法进行加载。
一、[使用WebView打开一个网页]
1.在布局xml文件中定义WebView组件
< WebView android:id = "@+id/webview"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
/>
2.在AndroidManifest.xml中添加网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
3.通过load函数加载网页
mWebview = (WebView) this .findViewById(R.id. webview );
// 简单地加载一个页面
mWebview .loadUrl(url);
// 加载assets目录下的页面(assetsindex.html)
mWebview .loadData( "file:///android_asset/index.html" );
但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。
二、自定义跳转链接:(重写WebViewClient中的shouldOverrideUrlLoading()方法)
在WebViewClient中还有很多的方法,例如:
public void onPageStarted(WebView view, String url, Bitmap favicon);
public void onPageFinished(WebView view, String url);
public void onLoadResource(WebView view, String url)
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
我们都可以通过重写来实现自己的个性化操作。
三、页面回退
实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
四、增加进度条
要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
WebView默认情况下是无法弹出弹出框的,为了当我们点击事件是弹出框可以弹出,就需要对WebView进行一些处理,我们需要借助WebChromeClient来实现WebView与js的交互
一般情况下,只需要重写其中的一种方法,重写方法之后,如果弹出框只弹出一次,那么要在return之前加上result.cancel();即:
WebView默认是不带地址栏和加进度条的,单单是一个显示网页内容的面板。
使用WebView非常简单,主要是通过load方法进行加载。
一、[使用WebView打开一个网页]
1.在布局xml文件中定义WebView组件
< WebView android:id = "@+id/webview"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
/>
2.在AndroidManifest.xml中添加网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
3.通过load函数加载网页
mWebview = (WebView) this .findViewById(R.id. webview );
// 简单地加载一个页面
mWebview .loadUrl(url);
// 加载assets目录下的页面(assetsindex.html)
mWebview .loadData( "file:///android_asset/index.html" );
但你会发现,如果点击页面的某条链接进行跳转的话,会启动系统的默认浏览器进行加载,调出了我们本身的应用。要解决这个问题我们需要借助于WebViewClient。
二、自定义跳转链接:(重写WebViewClient中的shouldOverrideUrlLoading()方法)
mWebview .setWebChromeClient( new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ // 使用当前的WebView加载页面 view.loadUrl(url); return true ; } });
在WebViewClient中还有很多的方法,例如:
public void onPageStarted(WebView view, String url, Bitmap favicon);
public void onPageFinished(WebView view, String url);
public void onLoadResource(WebView view, String url)
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
我们都可以通过重写来实现自己的个性化操作。
三、页面回退
实现了跳转后,你忽然想返回到前一个浏览过的页面是,发现返回键是直接退出应用了。要实现类似系统浏览器那样的,返回键先是返回到上一个页面,直到最初始的页面才退出的话,可以这么做:
// 重写onKeyDown public boolean onKeyDown ( int keyCode, KeyEvent event) { if ((keyCode == KeyEvent. KEYCODE_BACK ) && mWebview .canGoBack()) { mWebview .goBack(); return true ; } return super .onKeyDown(keyCode, event); }
四、增加进度条
要是再加上加载进度条那就完美了,我们可以借助WebChromeClient来实现:
mWebview .setWebChromeClient( new WebChromeClient() { public void onProgressChanged (WebView view, int newProgress){ loadingProgress .setProgress(newProgress); } });五、WebView弹出框的处理
WebView默认情况下是无法弹出弹出框的,为了当我们点击事件是弹出框可以弹出,就需要对WebView进行一些处理,我们需要借助WebChromeClient来实现WebView与js的交互
mWebView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(context) .setTitle("title") .setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.confirm(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); builder.create(); builder.show(); return super.onJsAlert(view, url, message, result); } @Override public boolean onJsConfirm(WebView view, String url,String message, JsResult result) { // TODO Auto-generated method stub return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { // TODO Auto-generated method stub return super.onJsPrompt(view, url, message, defaultValue, resul; } });
一般情况下,只需要重写其中的一种方法,重写方法之后,如果弹出框只弹出一次,那么要在return之前加上result.cancel();即:
mWebView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(context) .setTitle("title") .setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub result.confirm(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); builder.create(); builder.show(); result.cancel(); return true; } @Override public boolean onJsConfirm(WebView view, String url,String message, JsResult result) { // TODO Auto-generated method stub return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { // TODO Auto-generated method stub return super.onJsPrompt(view, url, message, defaultValue, resul; } });
相关文章推荐
- Android开发学习笔记:浅谈WebView (转)
- Android学习之WebView使用总结
- android开发学习笔记:浅谈WebView
- Android基础学习总结(十)——WebView的基本用法总结
- Android开发学习笔记:浅谈WebView
- Android Chromium WebView学习启动篇
- Android学习--浅谈WebView的使用
- Android WebView简要介绍和学习计划
- android 项目学习随笔十四(WebView)
- android webview控件学习
- Android开发学习笔记:浅谈WebView(转)
- android webview 学习
- Android开发学习笔记:浅谈WebView
- android 4.4 webview 学习
- Android开发学习笔记:浅谈WebView
- Android开发学习笔记:浅谈WebView
- Android学习之 WebView使用小结
- Android WebView简要介绍和学习计划
- Android(java)学习笔记147:textView 添加超链接(两种实现方式,,区别于WebView)
- Android开发学习笔记:浅谈WebView