在WebView中显示ProgressDialog
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WebView中显示ProgressDialog相关的知识,希望对你有一定的参考价值。
我已经搜索但我无法找到一个案例来实现我的webview,我的webview dosnt打开一个网页,它只是加载我有的html,所以我需要一个进度条,在数据出现之前,我已经在我的布局中声明了progressBar是我必须在webview中显示html的代码
mProgressBar = (ProgressBar) findViewById(R.id.pBar);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setjavascriptEnabled(true);
mWebView.loadDataWithBaseURL("", indicadores.toString(), "text/html", "UTF-8", "");
XML
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webview"/>
<ProgressBar
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/pBar"
android:layout_gravity="center"/>
在显示结果之前显示progressBar的最佳方法是什么。
谢谢
答案
在具有进度条的浏览器中,随着组件通过网络加载,进度会递增。
如果您在本地拥有所有webview数据,则无法报告进度。没有任何地方可以增加进度。您需要webview能够报告它的渲染进度,而这不存在。
另一答案
您有自己的html文件,只需要使用Web视图显示它,此页面不需要花费太多时间进行渲染。所以,如果你想放进度条效果比你可以使用runnable。
public class WebViewActivity extends AppCompatActivity {
private WebView webView;
private ProgressBar progressBar;
private int waitingTime = 2000; // mSec.
private Handler winHandler = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
webView = (WebView) findViewById(R.id.webView);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);
webView.getSettings().setJavaScriptEnabled(true);
initWebView();
}
private void initWebView() {
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
progressBar.setVisibility(View.GONE);
}
});
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
webView.loadDataWithBaseURL("", indicadores.toString(), "text/html", "UTF-8", "");
}
};
@Override
protected void onResume() {
super.onResume();
winHandler = new Handler();
winHandler.postDelayed(runnable, waitingTime);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (winHandler != null) {
winHandler.removeCallbacks(runnable);
}
}
}
在这里,等待时间是2秒,你可以根据需要改变它。
以上是关于在WebView中显示ProgressDialog的主要内容,如果未能解决你的问题,请参考以下文章
显示 ProgressDialog 并在一段时间后调用 OnBackPressed()