我看过一个类似于这个here的问题,但作为一个新手,有人能解释一下如何让它在WebView中工作,或者至少如何设置10秒的延迟,以便人们知道它正在加载吗?
发布于 2011-12-12 05:02:58
对于水平进度条,首先需要定义进度条,并将其与onCreate
中的XML文件链接起来
final TextView txtview = (TextView)findViewById(R.id.tV1);
final ProgressBar pbar = (ProgressBar) findViewById(R.id.pB1);
然后,您可以在WebChromeClient中使用onProgressChanged方法:
MyView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if(progress < 100 && pbar.getVisibility() == ProgressBar.GONE){
pbar.setVisibility(ProgressBar.VISIBLE);
txtview.setVisibility(View.VISIBLE);
}
pbar.setProgress(progress);
if(progress == 100) {
pbar.setVisibility(ProgressBar.GONE);
txtview.setVisibility(View.GONE);
}
}
});
在那之后,在你的布局中你会看到类似这样的东西
<TextView android:text="Loading, . . ."
android:textAppearance="?android:attr/textAppearanceSmall"
android:id="@+id/tV1" android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#000000"></TextView>
<ProgressBar android:id="@+id/pB1"
style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_centerVertical="true"
android:padding="2dip">
</ProgressBar>
这就是我如何在我的应用程序中做到这一点。
发布于 2010-03-29 20:40:59
我刚刚在这里找到了一个很好的例子:http://developer.android.com/reference/android/webkit/WebView.html。您只需将setprogress从:
activity.setProgress(progress * 1000);
至
activity.setProgress(progress * 100);
发布于 2016-03-21 18:15:37
下面是在android Web View中添加进度条的最简单方法。
在您的活动/片段中添加一个布尔型字段
private boolean isRedirected;
此布尔值将防止网页重定向导致的死URL,您只需将WebView对象和web传递到此方法中即可。
private void startWebView(WebView webView,String url) {
webView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
isRedirected = true;
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
isRedirected = false;
}
public void onLoadResource (WebView view, String url) {
if (!isRedirected) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(SponceredDetailsActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
}
public void onPageFinished(WebView view, String url) {
try{
isRedirected=true;
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}catch(Exception exception){
exception.printStackTrace();
}
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
在这里,当开始加载时,它将调用onPageStarted
。这里我将布尔值字段设置为false。但是当页面加载完成时,它将转到onPageFinished
方法,并且这里的布尔值字段被设置为真。有时,如果url是死的,它会被重定向,并且会在onPageFinished
方法之前到达onLoadResource()
。因此,它不会隐藏进度条。为了防止这种情况,我在onLoadResource()
中检查if (!isRedirected)
在关闭进度对话框之前,您可以在onPageFinished()
方法中编写10秒延迟代码
就这样。快乐编码:)
https://stackoverflow.com/questions/2537454
复制相似问题