Android webview里加载显示网页,显示进度,点击网页链接跳转到app页面
2017-06-06 11:43
1266 查看
1.怎么在webView里加载网页,并且让网页能正常滑动,缩放,可交互?
先写一个布局文件,如下,主要是包含一个WebView:
然后Activity的onCreate里调用如下代码:
setWebViewSettings()和setWebClient()分别定义如下:
这样就实现了加载网页的功能,注意页面会全部加载后才会显示出来,所以页面内容太多的话,第一次显示会很慢。
如果要实现点击网页里的链接,跳转到app页面,怎么实现?
先准备一个带链接的html页面文件,内容如下:
文件中实现了两个链接,其中一个我们想点击后跳转到app页面,另一个不跳转。
然后把文件放到项目的main/assets/文件夹下。如果没有此文件夹可以自己新建。
然后改一下加载网页文件的代码:
最后,重写上面提到的方法即可:
2.有时候网页比较大的话,加载很慢,这时候我们想在布局里加一个进度条,用于显示加载网页的进度,怎么做?
先在布局文件里加一个ProgressBar, 样式什么的自己设计,也可以用系统样式。
然后修改代码,findViewById之类的就不用说了,重要的是加上这个:
上面代码中的progressBar即为我们添加的进度条。
这样就可以在加载网页时显示进度了。
之前我们的代码里有个webview.setWebViewClient(),这次是webview.setWebChromeClient(),这两个方法有什么区别呢?可以参考前人的文章:
http://blog.csdn.net/linghu_java/article/details/6927439
3.如果当前处于webView所在页面,用户在按手机返回键时,想要返回上一个网页页面,而不是返回上一个Activity,怎么办?
像下面这样重写onKeyDown()方法即可:
更多设置项,可参考前人总结:http://www.cnblogs.com/bluestorm/archive/2013/04/15/3021996.html
先写一个布局文件,如下,主要是包含一个WebView:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/white"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" > </WebView> </LinearLayout>
然后Activity的onCreate里调用如下代码:
setWebViewSettings(); setWebClient(); webview.loadUrl("http://www.XXX.com");//要加载的页面
setWebViewSettings()和setWebClient()分别定义如下:
private void setWebViewSettings() { //获取一个webviewsetting对象 WebSettings setting = webview.getSettings(); //支持JavaScript setting.setJavaScriptEnabled(true); //显示缩放控制工具 setting.setDisplayZoomControls(true); //设置webview支持缩放 setting.setSupportZoom(true); setting.setBuiltInZoomControls(true); //设置加载进来的页面自适应手机屏幕 setting.setUseWideViewPort(true); setting.setLoadWithOverviewMode(true); }
private void setWebClient() { webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } }); }
这样就实现了加载网页的功能,注意页面会全部加载后才会显示出来,所以页面内容太多的话,第一次显示会很慢。
如果要实现点击网页里的链接,跳转到app页面,怎么实现?
先准备一个带链接的html页面文件,内容如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a href="m://my.com/">go to app</a><br/> <a href="m://my.commm/">don't go to app</a><br/> </body> </html>
文件中实现了两个链接,其中一个我们想点击后跳转到app页面,另一个不跳转。
然后把文件放到项目的main/assets/文件夹下。如果没有此文件夹可以自己新建。
然后改一下加载网页文件的代码:
String url = "file:///android_asset/test.html"; webview.loadUrl(url);
最后,重写上面提到的方法即可:
webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { Uri uri= Uri.parse(url); if(uri.getScheme().equals("m")&&uri.getHost().equals("my.com")){ //这里是跳转到app的实现代码,和平时的实现一样就行 //XXX }else{ view.loadUrl(url); } return true; } });
2.有时候网页比较大的话,加载很慢,这时候我们想在布局里加一个进度条,用于显示加载网页的进度,怎么做?
先在布局文件里加一个ProgressBar, 样式什么的自己设计,也可以用系统样式。
然后修改代码,findViewById之类的就不用说了,重要的是加上这个:
webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if(newProgress==100){ progressBar.setVisibility(View.GONE);//加载完网页进度条消失 } else{ progressBar.setVisibility(View.VISIBLE);//开始加载网页时显示进度条 progressBar.setProgress(newProgress);//设置进度值 } } });
上面代码中的progressBar即为我们添加的进度条。
这样就可以在加载网页时显示进度了。
之前我们的代码里有个webview.setWebViewClient(),这次是webview.setWebChromeClient(),这两个方法有什么区别呢?可以参考前人的文章:
http://blog.csdn.net/linghu_java/article/details/6927439
3.如果当前处于webView所在页面,用户在按手机返回键时,想要返回上一个网页页面,而不是返回上一个Activity,怎么办?
像下面这样重写onKeyDown()方法即可:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO 自动生成的方法存根 if(keyCode== KeyEvent.KEYCODE_BACK) { if(webview.canGoBack()) {//当webview不是处于第一页面时,返回上一个页面 webview.goBack(); return true; } else {//当webview处于第一页面时,直接退出程序 System.exit(0); } } return super.onKeyDown(keyCode, event); }
更多设置项,可参考前人总结:http://www.cnblogs.com/bluestorm/archive/2013/04/15/3021996.html
相关文章推荐
- iOS实现在webview页面内点击链接,跳转指定App
- ios App加载本地HTML网页,点击网页链接跳转到app页面的方法
- android:WebView在没有网络情况下,点击当前页面内链接不跳转并弹出提示框
- Android--当webview加载网页的时候在标题栏上显示加载进度
- android webView加载页面时显示出全部网页内容
- android中webview显示网页、进度条显示进度、上一页、下一页、支持放大缩小、返回按钮2秒两次点击退出应用
- Android--当webview加载网页的时候在标题栏上显示加载进度
- Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
- app中webview显示网页,类似于微信里点击链接
- Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
- [Android]webview直接加载网页<允许JS,进度条,当前应用内跳转>
- iOS实现在webview页面内点击链接,跳转指定App
- Android使用Webview显示页面以及点击跳转startActivity问题
- android webView加载页面时显示出全部网页内容
- Android--当webview加载网页的时候在标题栏上显示加载进度
- Android WebView加载显示进度条
- Android学习-使用WebView在app上显示网页
- android webview 加载网页显示对话框
- 【Android】webview点击跳转APP
- Android中点击TextView文本链接跳转到指定页面