gpt4 book ai didi

android - 在将 url 加载到 WebView 时显示 ProgressBar

转载 作者:搜寻专家 更新时间:2023-11-01 07:56:10 24 4
gpt4 key购买 nike

是否可以在加载 url 时显示进度条?我需要在我可以使用自定义进度条的进度条中显示进度级别。但是我无法找到获取 url 加载量的确切进度的代码。这是我当前的代码:

  public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
browser = (WebView)findViewById(R.id.webView1);
progressBar = (ProgressBar)findViewById(R.id.progressBar);
browser.setWebViewClient(new MyBrowser());
browser.setWebChromeClient(new MyCustomChromeClient());
mContext=this.getApplicationContext();
browser.loadUrl(target_url);
MainActivity.this.progressBar.setProgress(0);
}

private class MyBrowser extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
if (host.equals(target_url_prefix))
{
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
baseLayout.removeView(mWebviewPop);
mWebviewPop=null;
}
return false;
}

if(host.equals("m.facebook.com"))
{
return false;
}
view.loadUrl(url);
return true;
}

@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
noInternet();
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
visible();
}

@Override
public void onPageFinished(WebView view, String url) {
unvisible();
System.out.println("\n" +view.getUrl());
if(url.startsWith("https://m.facebook.com/v2.1/dialog/oauth")){
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
baseLayout.removeView(mWebviewPop);
mWebviewPop=null;
}
view.loadUrl(redirectUrl);
return;
}
super.onPageFinished(view, url);
}
}

private class MyCustomChromeClient extends WebChromeClient
{

@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new WebView(mContext);
mWebviewPop.setVerticalScrollBarEnabled(false);
mWebviewPop.setHorizontalScrollBarEnabled(false);
mWebviewPop.setWebViewClient(new MyBrowser());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
baseLayout.addView(mWebviewPop);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();

return true;
}

@Override
public void onCloseWindow(WebView window) {
}

@Override
public void onProgressChanged(WebView view, int newProgress) {
MainActivity.this.setValue(newProgress);
super.onProgressChanged(view, newProgress);
}
}
public void setValue(int progress) {
this.progressBar.setProgress(progress);
}
}

如何获取加载 url 的确切进度。使用此代码,我可以获得进度条加载,但它显示为不确定的进度条。我想显示一个进度条,它是一个自定义 View 。它应该显示成功加载 url 的百分比。所以也许我可以膨胀自定义 View ,但我还是不知道如何获得准确的百分比。有人可以帮我处理这段代码吗。

最佳答案

WebChromeClient 的 onProgressChanged() 为您提供有关页面加载状态的进度。请参阅以下有关来自 android api 文档的功能的信息。

public void onProgressChanged (WebView view, int newProgress)

Added in API level 1
Tell the host application the current progress of loading a page.

Parameters
view The WebView that initiated the callback.
newProgress Current page loading progress, represented by an integer between 0 and 100.

关于android - 在将 url 加载到 WebView 时显示 ProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com