📅  最后修改于: 2023-12-03 14:51:14.393000             🧑  作者: Mango
在Android中,WebView是一个能够显示网页内容的控件。当WebView加载网页时,我们有时需要显示加载进度。ProgressBar是一个进度条控件,可以用来显示加载进度。本文将介绍如何在Android中的WebView中加载URL时如何在ProgressBar中显示进度。
我们需要在布局文件中添加一个WebView和一个ProgressBar。如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
</RelativeLayout>
WebViewClient是一个用于处理WebView页面加载事件的类。我们需要在Activity中继承WebViewClient并对其进行实现,以实现在ProgressBar中显示加载进度。
public class MyWebViewClient extends WebViewClient {
private ProgressBar progressBar;
public MyWebViewClient(ProgressBar progressBar) {
this.progressBar = progressBar;
}
// 当页面开始加载时调用
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
}
// 当页面加载完成后调用
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
}
// 当页面加载进度改变时调用
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
progressBar.setProgress(newProgress);
}
}
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
progressBar = findViewById(R.id.progressBar);
webView.setWebViewClient(new MyWebViewClient(progressBar));
webView.loadUrl("http://www.example.com");
}
}
在Activity中,我们先获取WebView和ProgressBar控件。然后,我们创建一个实例化的MyWebViewClient对象,并传入ProgressBar对象。最后,我们设置WebViewClient为MyWebViewClient对象,并调用loadUrl方法加载网页。当网页开始加载时,onPageStarted方法将被调用,并显示ProgressBar。当网页完成加载时,onPageFinished方法将被调用,ProgressBar将被隐藏。在页面加载过程中,onProgressChanged方法将被调用,并设置ProgressBar的进度。
至此,我们就成功实现了在Android中的WebView中加载URL时在ProgressBar中显示进度的功能。