android中webview 怎么实现网页加载时显示加载进度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中webview 怎么实现网页加载时显示加载进度相关的知识,希望对你有一定的参考价值。

方法一:可以在WebView上面放一个进度条,加载webView时显示出来,然后webView里面有加载回调的方法,判断状态码如果是200则隐藏即可。
方法二:在webview里面加进度条
参考技术A 可以在第一次加载进度达到百分之百时重新加载里一个网页,使用标识可以判断第一次加载,WebView中方法获取加载进度。。。本回答被提问者采纳

Android 中WebView的使用详解


前言: 通过WebView控件可以实现加载网页的效果。

  1. 加载URL(网络或者本地assets文件夹下的html文件)
  2. 加载html代码
  3. Native和JavaScript的相互调用

一、加载网页的方法:

  1. 加载网络URL
    webView.loadUrl(“https://m.baidu.com”);
  2. 加载assets目录下的html文件
    webView.loadUrl(“file:///android_asset/web.html”);
  3. 加载html代码
    webView.loadData();
    webView.loadDataWithBaseURL();

二、网页的前进与后退: 相关的几个方法

  1. webView.canGoBack() 当前页面是否可以返回
  2. webView.goBack() 返回当前页面
  3. webView.canGoForward() 当前页面是否可以向前
  4. webView.goForward() 向前进入下一个页面
  5. webView.canGoBackOrForward(int steps) 当前页面是否可以返回或者进入下一个页面 返回值为boolean
  6. webView.goBackOrForward(int steps) 当前页面要前进或者后退几步

三、接下来我们以访问网络百度移动站点进行演示
1.首先实现布局页面activity_web_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".WebViewActivity"
android:orientation="vertical"
>
<WebView
android:id="@+id/wv"
android:layout_
android:layout_
/>
</LinearLayout>

2.在WebViewActivity中进行加载网页的操作:

public class WebViewActivity extends AppCompatActivity 
private static final String TAG = "WebViewActivity";
private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
wv = findViewById(R.id.wv);
//加载本地中的html文件
// wv.loadUrl("file:///android_asset/web.html");

//设置支持js否则有些网页无法打开
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new MyClient());
wv.setWebChromeClient(new MyWebChromeClient());
//加载网络url
wv.loadUrl("https://m.baidu.com");


class MyClient extends WebViewClient
//监听到页面发生跳转的情况,默认打开web浏览器
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
//在webView中加载要打开的链接
view.loadUrl(request.getUrl().toString());
return true;

//页面开始加载
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
super.onPageStarted(view, url, favicon);
Log.e(TAG, "onPageStarted: ");

//页面加载完成的回调方法
@Override
public void onPageFinished(WebView view, String url)
super.onPageFinished(view, url);
Log.e(TAG, "onPageFinished: ");
//在webView中加载js代码
wv.loadUrl("javascript:alert(hello)");



class MyWebChromeClient extends WebChromeClient
//监听网页进度 newProgress进度值在0-100
@Override
public void onProgressChanged(WebView view, int newProgress)
super.onProgressChanged(view, newProgress);


//设置Activity的标题与 网页的标题一致
@Override
public void onReceivedTitle(WebView view, String title)
super.onReceivedTitle(view, title);
setTitle(title);



@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
//如果用户按的是返回键 并且WebView页面可以返回
if (keyCode==event.KEYCODE_BACK&&wv.canGoBack())
//让WebView返回
wv.goBack();
return true;

//如果WebView不能返回 则调用默认的onKeyDown方法 退出Activity
return super.onKeyDown(keyCode, event);


具体注释已经在代码中给出!


以上是关于android中webview 怎么实现网页加载时显示加载进度的主要内容,如果未能解决你的问题,请参考以下文章

android中webview 怎么实现网页加载时显示加载进度

android 中 webview 怎么用 localStorage

android webview 加载url有延迟怎么办,有没有比wenview更好的第三方控件

怎么用WebView加载本地html

Android中webview加载页面有重叠,是怎么回事

关于Android中WebView在加载网页的时候,怎样应用本地的CSS效果