使用ProgressBar for WebViewClient显示进度 [英] Show Progress using ProgressBar for WebViewClient
本文介绍了使用ProgressBar for WebViewClient显示进度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用WebViewClient加载网页,我想显示代码的进度栏.我的代码没有逐步加载进度.它仅显示100%的进度.如何根据网页加载时间设置进度?
I am using WebViewClient to load web pages and I would like to show progress bar for my code. My code isn't loading the progress gradually. It only shows 100% progress. How do I set the progress based on web page loading time?
出于我的目的,我只需要在一个网页上加载" https://www.google.com "仅限WebView.请帮忙.谢谢你.代码如下所示:
For my purpose I have to load just "https://www.google.com" on a WebView only. Please help. Thank you. Code is shown below :
活动文件
public class MainActivity extends Activity {
private WebView webView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int vc = Color.parseColor("#feca01");
progressBar = (ProgressBar) findViewById(R.id.determinateBar);
progressBar.getProgressDrawable().setColorFilter(
vc, android.graphics.PorterDuff.Mode.SRC_IN);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyBrowser());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://deelay.me/5000/http://www.google.com");
}
private class MyBrowser extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.incrementProgressBy(10);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.VISIBLE);
// progressBar.setProgress(0);
}
}
}
XML文件
`
<ProgressBar
android:id="@+id/determinateBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="400dp"
android:padding="0dp"
android:layout_height="2dp" />
<WebView
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_weight="0.91"
android:layout_width="match_parent"
android:padding="0dp"
/>
`
推荐答案
尝试这个我的朋友
WebView webView;
ProgressBar progressBar;
webView = (WebView) findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl(url);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
progressBar.setMax(100);
progressBar.setProgress(1);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.GONE);
}
});
布局
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:layout_marginTop="-7dp"
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@android:color/transparent"
android:indeterminate="false"
android:max="100"
android:progress="1"
android:theme="@style/ProgressbarTheme" />
这篇关于使用ProgressBar for WebViewClient显示进度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文