针对“Android Webview添加网页加载进度条实例详解”,我们可以从以下几个方面进行讲解。
一、添加进度条布局
首先需要为Webview添加一个进度条布局,代码如下:
<LinearLayout
android:id="@+id/ll_webview_wrapper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_gravity="center"
android:layout_marginTop="-5dp"
android:progressDrawable="@drawable/webview_progress_bar" />
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
在这个布局中,我们先定义了一个垂直方向的LinearLayout,然后在该LinearLayout内部放置了一个ProgressBar和一个WebView。ProgressBar的样式使用了系统提供的水平进度条样式,然后我们将它的高度设置为5dp,并且增加了一个 -5dp 的marginTop,是为了让ProgressBar与WebView之间留出一点空隙。
二、编写加载进度变化监听器
接下来我们需要编写一个进度变化监听器,负责监听页面的加载进度变化,并且更新ProgressBar的进度。代码如下:
public class MyWebviewClient extends WebViewClient {
private ProgressBar mProgressBar;
public MyWebviewClient(ProgressBar progressBar) {
mProgressBar = progressBar;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mProgressBar.setProgress(0);
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mProgressBar.setProgress(100);
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
mProgressBar.setProgress(newProgress);
}
}
这段代码中,我们继承了WebViewClient,并且在其内部重写了一些关键的回调方法。onPageStarted() 方法会在开始加载页面时被调用,我们在这里将ProgressBar的进度归零,并且显示出ProgressBar。同理,onPageFinished() 方法会在页面加载完成后被调用,我们在这里将ProgressBar的进度设置为100,并且将ProgressBar隐藏。
最后,我们需要重写onProgressChanged()方法,这个方法则会在页面加载过程中被多次调用,我们在这里将ProgressBar的进度设置为当前页面加载进度即可。
三、设置WebView的Client
接下来我们需要将自定义的WebviewClient设置给WebView。代码如下:
WebView mWebView = findViewById(R.id.webview);
ProgressBar mProgressBar = findViewById(R.id.progressBar);
mWebView.setWebViewClient(new MyWebviewClient(mProgressBar));
这段代码很简单,我们在SetWebViewClient()方法中指定了我们自定义的WebviewClient,并且将ProgressBar也传了进去,这样我们就可以在WebviewClient中方便地处理ProgressBar的变化了。
至此,Android Webview 添加网页加载进度条的攻略就大致完成了。我们通过添加布局和编写WebviewClient的方式,实现了一个简单的进度条来监控Webview的加载进度。同时我们还可以考虑一些进阶的功能,例如添加WebView的错误处理方法,或者实现一个自定义的ProgressBar等等。
其中,我们对网上的一些文章进行了参考,以下是两个示例链接:
《Android WebView添加加载进度条》
《Android WebView 的使用详解》
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Webview添加网页加载进度条实例详解 - Python技术站